所以我有一个主窗口,显示MDI类型界面,里面打开了多个文档标签(就像VS一样)。主窗口和文档窗口都有各自的VM。 CloseDocument 命令在文档中处理,但需要告诉主窗口VM,以便主窗口VM可以更新其Documents集合。在MVVM中管理这个的正确方法是什么?我有一些想法:
在遵循MVVM实践的过程中,应该使用哪些(或者如果某人有更好的人)?
答案 0 :(得分:1)
我想我会选择解决方案1.如果您使用MVVM Light,那么您可以应用Messenger类型在文档之间传递信息。
每个文档都有一个Command参考这个方法:
private void CloseDocumentExecuteCommand()
{
var message = new DocumentCloseMessage() { Document = this};
Messenger.Default.Send<DocumentCloseMessage>(message);
}
在主窗口的VM中你会有这样的东西: (在构造函数中)
Messenger.Default.Register<CloseMessage>(this, (msgData) => this.CloseMessageReceived(msgData));
...但这只有在你有Messenger时才有效,否则你可以使用事件,但是我担心你需要在VM之间使用强引用。