MVVM Light - WP7 Page / События приложений - PullRequest
3 голосов
/ 22 июля 2010

Есть ли способ использовать MVVM Light для обработки событий приложений, таких как закрытое, деактивированное, активированное и т. Д.?

Ответы [ 2 ]

5 голосов
/ 04 августа 2010

Спасибо Мэтту Касто за то, что он направил меня в нужном направлении.

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

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;
    }
});
4 голосов
/ 23 июля 2010

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

...