C# MVVM灯光-子视图和对话框

C# MVVM灯光-子视图和对话框,c#,wpf,windows-phone-7,mvvm,mvvm-light,C#,Wpf,Windows Phone 7,Mvvm,Mvvm Light,我正在试验MVVMLight和WindowsPhone7,到目前为止,我发现它相对容易。有一件事我不能想清楚,那就是产生新的子窗口/视图。例如:如果我想创建/导航到一个新视图以允许用户编辑项目,然后在项目返回时刷新数据库中的项目列表,我应该为视图的每次激活添加某种处理程序,还是可以导航到编辑视图,然后在视图关闭时触发回调(NavigationService.GoBack被调用).我使用的是消息传递框架。让MainViewModel订阅一条消息,该消息将导致其刷新,然后从子页面发出该消息。Main

我正在试验MVVMLight和WindowsPhone7,到目前为止,我发现它相对容易。有一件事我不能想清楚,那就是产生新的子窗口/视图。例如:如果我想创建/导航到一个新视图以允许用户编辑项目,然后在项目返回时刷新数据库中的项目列表,我应该为视图的每次激活添加某种处理程序,还是可以导航到编辑视图,然后在视图关闭时触发回调(NavigationService.GoBack被调用).

我使用的是消息传递框架。让MainViewModel订阅一条消息,该消息将导致其刷新,然后从子页面发出该消息。MainViewModel仍在内存中,将听到该消息并能够响应。我在我的博客上有一个这样的示例,但请注意,您也可以创建自己的自定义消息(我个人一直都这样做),然后手动将其发送到:

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

// In ChildViewModel
Messenger.Default.Send<ChildProcessCompleteMessage>(new ChildProcessCompleteMessage());
//在MainViewModel中
Register(这个,()=>RefreshData());
//在ChildViewModel中
Send(新的ChildProcessCompleteMessage());

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

我删除了我的答案,因为我没有注意,也没有看到它是针对WP 7的。