title: Caliburn.micro - notifying a viewmodel on property change in another viewmodel
body: <p>I have a program that connects to a server and sends commands to it.
  in my program I have 2 windows, one of them is a toolbar with a textbox that shows current status (we'll call that "mainviewmodel") and the other is a login window which receives username and password and logs me into the server (we'll call that "loginviewmodel")</p>
  
  <p>now, in order for the mainviewmodel to know the loginviewmodel I use this:</p>
  
  <pre><code>[Import]
  Private LoginViewModel loginViewModel;
  </code></pre>
  
  <p>lunch the login window from the mainviewmodel I have the following function:</p>
  
  <pre><code>public void Login()
  {
      if (!loginViewModel.CanInvokeLogin)
          return;
      if (loginViewModel.IsActive)
      {
          loginViewModel.Focus();
      }
  else
      {
          windowManager.ShowWindow(loginViewModel);
      }
  }
  </code></pre>
  
  <p>as you can see - I have in loginviewmodel a property named CanInvokeLogin which indicates if login is in progress or not.</p>
  
  <p>on mainviewmodel I have a property that shows me current client status (binded to the view's textbox)</p>
  
  <pre><code>public string TextboxDescription
  {
      get
      {
          switch (AvailabilityStatus.Type)
          {
              case AvailabilityStatusType.READY:
                  return ("Ready");
              case AvailabilityStatusType.BREAK:
                  return (AvailabilityStatus.Reason);
              case AvailabilityStatusType.DISCONNECTED:
                  if (!loginViewModel.CanInvokeLogin)
                  {
                      return ("Conencting");
                  }
                  return ("connected");
              default:
                  return ("Please wait...");
              }
          }
      }
  }
  </code></pre>
  
  <p>My problem is - the status would not be updated on the view unless </p>
  
  <pre><code>NotifyOfPropertyChange(() =&gt; TextboxDescription);
  </code></pre>
  
  <p>is being called, so I need to call it whenever </p>
  
  <pre><code>NotifyOfPropertyChange(() =&gt; CanInvokeLogin);
  </code></pre>
  
  <p>is being called, but that happens on a different viewmodel.</p>
  
  <p>so, how can I notify the mainviewmodel that caninvokelogin have been changed?
  I know I could use eventAggregator and send a message from one viewmodel to another, but it sounds like killing a fly with a cannon and I bet there's a simpler way,</p>
  
  <p>any suggestions?</p>