MVVM Light - 子视图和对话框

Ech*_*lon 5 c# wpf mvvm windows-phone-7 mvvm-light

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

Chr*_*nig 3

我为此使用的是消息传递框架。让 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());
Run Code Online (Sandbox Code Playgroud)

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