2010-07-22 34 views

回答

4

你可以做的一件事就是在App.xaml.cs中处理这些事件,让他们使用默认的Messenger实例发送消息。然后,只需注册任何视图模型即可接收该消息。如果您需要取消该事件,请使用带回调的消息告诉应用程序取消。

+0

我喜欢它。谢谢! – chief7 2010-07-26 04:26:40

5

感谢Matt Casto送我正确的方向。

这里是工作代码:

App.xaml.cs:

private void Application_Activated(object sender, ActivatedEventArgs e) 
    { 
     Messenger.Default.Send(new NotificationMessage<AppEvents>(AppEvents.Activated, string.Empty)); 
    } 
    private void Application_Deactivated(object sender, DeactivatedEventArgs e) 
    { 
     Messenger.Default.Send(new NotificationMessage<AppEvents>(AppEvents.Deactivated, string.Empty)); 
    } 
    private void Application_Closing(object sender, ClosingEventArgs e) 
    { 
     Messenger.Default.Send(new NotificationMessage<AppEvents>(AppEvents.Closing, string.Empty)); 
    } 

视图模型:

Messenger.Default.Register<NotificationMessage<AppEvents>>(this, n => 
{ 
    switch (n.Content) 
    { 
     case AppEvents.Deactivated: 
      _sessionPersister.Persist(this); 
      break; 
     case AppEvents.Activated: 
      var model = _sessionPersister.Get<TrackViewModel>();     
      break; 
    } 
}); 
+0

是的,这工作。但是ApplicationLaunching呢?是可以强制从App.xaml.cs创建ViewModel? – 2013-05-27 22:52:31