将ViewModel的属性分配给C#WPF桌面应用程序中另一个ViewModel的属性

时间:2014-06-26 19:33:44

标签: c# .net wpf mvvm

我正在开发一个C# WPF MVVM应用。我是MVVM的新手,不使用任何工具包/库,只是实现ActionCommand接口的ICommand类和实现{BaseINPC的{​​{1}}类1}}(我的ViewModels派生自这个类)。

我的模型有一个INotifyPropertyChanged类,其中包含字符串DataSet属性(数据集文件的位置)。

在我的InputPath中,我在顶部有一个MainView,它是一个自己的视图(Menu),使用MenuView实现让它UserControl设置为相应的DataContext。每个菜单项都绑定到执行基本IO操作的MenuViewModel,例如ActionCommand用于加载文件等。OpenFileDialogs具有MenuViewModel属性,用于保存位置文件。

我的问题是:当我使用SelectedPath选择文件时(即在我的MenuView中设置SelectedPath属性),我还希望它设置MenuViewModelDataSet.InputPath。然而,我的SelectedPath课程已在我的DataSet中实例化,而不是MainViewModel,这几乎是我被困的地方。

我的方法是否正确?如果是,MenuViewModel(在DataSet.InputPath中)如何设置为MainViewModelSelectedPath)?

1 个答案:

答案 0 :(得分:2)

如果您坚持不使用MVVM框架,则需要编写自己的Message Bus实现...

否则,几乎所有的MVVM框架都使用消息总线进行这种类型的VM间通信,因此选择一个漂亮的noob友好MVVM框架(我推荐使用Simple MVVM Toolkit或MVVM Light)并利用其消息总线而不是重新发明轮子并且编写自己的MB是可行的方法。