MVVM Light — дочерние представления и диалоги

#c# #wpf #windows-phone-7 #mvvm #mvvm-light

#c# #wpf #windows-phone-7 #mvvm #mvvm-light

Вопрос:

Я экспериментирую с MVVMLight и Windows Phone 7 и пока нахожу это относительно простым. Единственное, что я не могу понять, это создание новых дочерних окон / представлений. Например: если я хочу создать новое представление / перейти к нему, чтобы разрешить пользователю редактировать элемент, а затем обновлять список элементов из базы данных при их возвращении, должен ли я добавлять какой-то обработчик для каждой активации представления, или я могу перейти к редактированию представления, а затем вызвать обратный вызов при закрытии представления (NavigationService.Вызывается GoBack).

Комментарии:

1. Я удалил свой ответ, потому что не обратил внимания и не увидел, что он предназначен для WP 7.

Ответ №1:

Для этого я использую платформу обмена сообщениями. Попросите MainViewModel подписаться на сообщение, которое должно привести к его обновлению, затем отправьте это сообщение с дочерней страницы. MainViewModel, все еще находящийся в памяти, услышит это сообщение и сможет ответить. У меня есть пример этого в моем блоге по адресу http://chriskoenig.net/2010/07/05/mvvm-light-messaging /, но обратите внимание, что вы также можете создавать свои собственные сообщения (я лично делаю это постоянно), а затем просто создавать их вручную:

 // In MainViewModel
Messenger.Default.Register<ChildProcessCompleteMessage>(this, () => RefreshData());

// In ChildViewModel
Messenger.Default.Send<ChildProcessCompleteMessage>(new ChildProcessCompleteMessage());
  

Этот шаблон я довольно часто использую в своих приложениях, чтобы обеспечить связь между моделями представлений. Я не уверен, что это полностью отвечает на ваш вопрос, поэтому дайте мне знать, если вам понадобится дополнительная информация.