我正在尝试MVVMLight和Windows Phone 7,到目前为止发现它相对容易。我无法理解的一件事是产生了新的子窗口/ View 。例如:如果我要创建/导航到新 View 以允许用户编辑项目,然后在返回项目时刷新数据库中的项目列表,是否应该为每次激活 View 添加某种处理程序,或者我可以导航到编辑 View ,然后在 View 关闭时触发回调(调用NavigationService.GoBack)。
最佳答案
我为此使用的是消息传递框架。让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());
我在应用程序中使用了很多这种模式,以允许 View 模型之间进行通信。我不确定这是否能完全回答您的问题,所以请告诉我您是否需要更多信息。
关于c# - MVVM Light- subview 和对话框,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5554951/