MVVM Light - 子视图和对话框

时间:2011-04-05 16:11:24

标签: c# wpf windows-phone-7 mvvm mvvm-light

我正在尝试MVVMLight和Windows Phone 7,到目前为止发现它相对容易。我无法理解的一件事是产生新的子窗口/视图。例如:如果我想创建/导航到新视图以允许用户编辑项目,然后在返回时刷新数据库中的项目列表,是否应该为每次激活视图添加某种处理程序,或者我可以导航到编辑视图,然后在视图关闭时触发回调(调用NavigationService.GoBack)。

1 个答案:

答案 0 :(得分:3)

我使用的是Messaging框架。让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());

这是我在我的应用中使用相当多的模式,以允许视图模型之间的通信。我不确定这是否完全回答了你的问题,如果你需要更多信息,请告诉我。