我正在开发一个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
属性),我还希望它设置MenuViewModel
到DataSet.InputPath
。然而,我的SelectedPath
课程已在我的DataSet
中实例化,而不是MainViewModel
,这几乎是我被困的地方。
我的方法是否正确?如果是,MenuViewModel
(在DataSet.InputPath
中)如何设置为MainViewModel
(SelectedPath
)?
答案 0 :(得分:2)
如果您坚持不使用MVVM框架,则需要编写自己的Message Bus实现...
否则,几乎所有的MVVM框架都使用消息总线进行这种类型的VM间通信,因此选择一个漂亮的noob友好MVVM框架(我推荐使用Simple MVVM Toolkit或MVVM Light)并利用其消息总线而不是重新发明轮子并且编写自己的MB是可行的方法。