C# 从一个视图模型到另一个视图模型进行通信
我有一个ProductCategoryViewModel,其中有一个treeView控件,我绑定到我的viewModel中的一个集合,在treeView控件上有一个上下文菜单。选择上下文菜单后,我打开另一个窗口,窗口上有一个文本框和两个按钮,确定和取消,在这里,用户可以在文本框中输入一个类别名称,单击“确定”后,我想将该类别添加到数据库中,还想关闭窗口并填充ProductCategoryViewModel的CategoryCollection(以反映更改)。这些是我的要求 我的问题是: 1-我是否需要为新窗口创建一个单独的viewModel,并编写代码将类别添加到数据库中,或者只为按钮创建一个字符串属性和两个命令,在我的ProductCategoryViewModel中创建ok和cancel,并在其中写入插入逻辑, 当Ok命令被调用时C# 从一个视图模型到另一个视图模型进行通信,c#,wpf,mvvm,treeview,C#,Wpf,Mvvm,Treeview,我有一个ProductCategoryViewModel,其中有一个treeView控件,我绑定到我的viewModel中的一个集合,在treeView控件上有一个上下文菜单。选择上下文菜单后,我打开另一个窗口,窗口上有一个文本框和两个按钮,确定和取消,在这里,用户可以在文本框中输入一个类别名称,单击“确定”后,我想将该类别添加到数据库中,还想关闭窗口并填充ProductCategoryViewModel的CategoryCollection(以反映更改)。这些是我的要求 我的问题是: 1-我是
2-如果我为窗口创建了一个新的视图模型,我如何与我的ProductCategoryViewModel进行通信(刷新CategoryCollection)。以注释的形式开始,并不断增长……因此我们开始:
EventAggregator
即可
ViewModel并调用您的事件(在您的示例中是
添加到类别集合
:
//Subscribe
eventAggregator.GetEvent<CategoryUpdated>().Subscribe(ExitMethod);
// Publish
eventAggregator.GetEvent<CategoryUpdated>().Publish();
//订阅
eventAggregator.GetEvent().Subscribe(ExitMethod);
//发表
eventAggregator.GetEvent().Publish();
新窗口-新虚拟机。要进行通信,请传递实例(在新窗口虚拟机构造函数中)。您能分享一些代码吗?到目前为止,您所做的工作,从描述中了解情况并不困难。