Guest User

Untitled

a guest
Feb 20th, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.50 KB | None | 0 0
  1. public class TextBoxViewModel : ViewModelBase
  2. {
  3. private string _text;
  4.  
  5. public TextBoxViewModel()
  6. {
  7. ShowCalculatorCommand = new RelayCommand(ShowCalculator);
  8. }
  9.  
  10. public string Text
  11. {
  12. get { return _text; }
  13. set { Set(ref _text, value); }
  14. }
  15.  
  16. public ICommand ShowCalculatorCommand { get; }
  17.  
  18. private void ShowCalculator()
  19. {
  20. MessengerInstance.Send(new NotificationMessage<string>(Text, "ShowCalculator"));
  21.  
  22. // Слушаем нотификацию "SubmitCalculator".
  23. MessengerInstance.Register<NotificationMessage<string>>(this, message =>
  24. {
  25. if (message.Notification == "SubmitCalculator")
  26. {
  27. Text = message.Content;
  28. }
  29. });
  30.  
  31. // Слушаем нотификацию "CloseCalculator".
  32. MessengerInstance.Register<NotificationMessage<string>>(this, message =>
  33. {
  34. if (message.Notification == "CloseCalculator")
  35. {
  36. // Калькулятор закрыт - отписываемся от нотификаций.
  37. MessengerInstance.Unregister(this);
  38. }
  39. });
  40. }
  41. }
  42.  
  43. // В обработчике события Loaded главного окна.
  44. Messenger.Default.Register<NotificationMessage<string>>(this, message =>
  45. {
  46. if (message.Notification == "ShowCalculator")
  47. {
  48. var window = new CalculatorWindow
  49. {
  50. DataContext = new CalculatorViewModel { Text = message.Content }
  51. };
  52.  
  53. window.Show();
  54. }
  55. });
  56.  
  57. // В обработчике события Loaded окна с калькулятором.
  58. Messenger.Default.Register<NotificationMessage>(this, message =>
  59. {
  60. if (message.Notification == "CloseCalculator")
  61. {
  62. Close();
  63. }
  64. });
  65.  
  66. public class CalculatorViewModel : ViewModelBase
  67. {
  68. private string _text;
  69.  
  70. public CalculatorViewModel()
  71. {
  72. OkCommand = new RelayCommand(Ok);
  73. CancelCommand = new RelayCommand(Cancel);
  74. }
  75.  
  76. public string Text
  77. {
  78. get { return _text; }
  79. set { Set(ref _text, value); }
  80. }
  81.  
  82. public ICommand OkCommand { get; }
  83. public ICommand CancelCommand { get; }
  84.  
  85. private void Ok()
  86. {
  87. MessengerInstance.Send(new NotificationMessage<string>(Text, "SubmitCalculator"));
  88. MessengerInstance.Send(new NotificationMessage("CloseCalculator"));
  89. }
  90.  
  91. private void Cancel()
  92. {
  93. MessengerInstance.Send(new NotificationMessage("CloseCalculator"));
  94. }
  95. }
Add Comment
Please, Sign In to add comment