2010-07-22 3 views

ответ

4

Одна вещь, которую вы могли бы сделать, это обработать эти события в App.xaml.cs и отправить им сообщение, используя экземпляр Messenger по умолчанию. Затем просто нужно зарегистрировать любые модели моделей для получения сообщения. Если вам нужно отменить событие, используйте сообщение с обратным вызовом, сообщающее приложению отменить.

+0

мне это нравится. Благодаря! – chief7

5

Благодаря Мэтту Касто для отправки меня в правильном направлении.

Вот рабочий код:

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)); 
    } 

ViewModel:

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? Можно ли создать ViewModel из App.xaml.cs? –