C# 在C WPF桌面应用程序中将ViewModel的属性指定给另一个ViewModel的属性
我正在开发一个C WPF MVVM应用程序。我是MVVM新手,没有使用任何工具包/库,只是一个实现ICommand接口的ActionCommand类和一个实现INotifyPropertyChanged my ViewModels派生自该类的BaseINPC类 我的模型有一个DataSet类,其字符串InputPath属性表示DataSet文件的位置 在我的MainView中,我在顶部有一个菜单,它是它自己的MenuView视图,使用UserControl实现,UserControl将其DataContext设置为对应的MenuViewModel。每个菜单项都绑定到一个ActionCommand,该命令执行基本IO操作,例如用于加载文件的OpenFileDialogs等。MenuViewModel具有用于保存文件位置的SelectedPath属性 我的问题是:当我使用MenuView选择文件时,即在MenuView模型中设置SelectedPath属性时,我还希望它将DataSet.InputPath设置为SelectedPath。然而,我的DataSet类是在我的MainViewModel中实例化的,而不是MenuViewModel,这正是我所处的位置C# 在C WPF桌面应用程序中将ViewModel的属性指定给另一个ViewModel的属性,c#,.net,wpf,mvvm,C#,.net,Wpf,Mvvm,我正在开发一个C WPF MVVM应用程序。我是MVVM新手,没有使用任何工具包/库,只是一个实现ICommand接口的ActionCommand类和一个实现INotifyPropertyChanged my ViewModels派生自该类的BaseINPC类 我的模型有一个DataSet类,其字符串InputPath属性表示DataSet文件的位置 在我的MainView中,我在顶部有一个菜单,它是它自己的MenuView视图,使用UserControl实现,UserControl将其Data
我的方法正确吗?如果是这样,如何将MainViewModel中的DataSet.InputPath设置为MenuViewModel的SelectedPath?如果坚持不使用MVVM框架,则需要编写自己的消息总线实现
否则,,事实上,所有MVVM框架都使用消息总线进行这种类型的VM间通信,因此选择一个不错的noob友好型MVVM框架我建议使用简单的MVVM工具包或MVVM Light,并利用其消息总线,而不是重新发明轮子,编写自己的MB。实现此功能后,您将能够从一个viewmodel向另一个viewmodel发送通知。请阅读此处的更多详细信息。@bogza.anton,那么您是在鼓励他编写自己的消息总线实现,而不是使用一个成熟的、同行评审的MVVM框架?如果他的目标纯粹是学术性的,那么这是有意义的,否则我的建议是获得一个好的MVVM框架,然后继续编写真正重要的代码……我最终没有框架,因为我认为它们不是必需的,但因为显然它们是需要的,我将不得不查看@DeanK.的建议框架。@DeanK。根据您的建议扩展我的问题:假设我确实使用了MVVM框架,那么viewmodels相互传递参数的方法是否正确?@globetrotter是的,在这种情况下,您将使用框架的SendMessage方法在视图模型之间传递对象。。。