我正在尝试使用 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/