MVVM Light - дочерние представления и диалоги - PullRequest
5 голосов
/ 05 апреля 2011

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

1 Ответ

3 голосов
/ 12 мая 2011

Для этого я использую среду обмена сообщениями.Попросите 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());

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

...