1.是否有必要为每个视图都有一个新的ViewModel?如果不是,那么创建单个MasterViewModel是否违反了MVVM?
不是。您可以使某些ViewModel与大量视图对应,每个视图以不同的格式显示相同的数据。实际上,这首先是MVVM的基本原理 - 隔离显示和业务规则,以便通过加载不同的视图来改变显示格式。
你也可以有一个View对应多个不同的ViewModels。这是显示UI上的代码重用。
2. ViewModel如何相互通信?
通常ViewModels通过WPF绑定与视图进行通信。这就是为什么它被称为MVVM而不是MVC。
ViewModels可以通过一些标准的.NET手段相互通信。
3. MainWindow.xaml.cs我集成了所有视图,应该只有viewmodel的初始化和分配的DataContext会在那里,或者我可以把其他代码呢?
您通常会将每个视图分隔为单独的XAML文件。这可以很容易地替换另一个视图来获取不同格式的相同数据。
通常,建议是您的代码分离成自包含模块;即一个视图一个文件,一个视图模型一个文件。
4.我有我的定义事件处理器。我应该在ViewModel还是model-view-viewmodel之外使用它们?
活动应应看法,如果他们是纯粹的UI驱动的处理(即没有任何与数据做)。
如果事件应该不会影响底层数据的一些变化(或做业务规则的一些动作),就可以反过来提高对视图模型的事件。请注意,ViewModel上的此事件可能与View/UI上的事件不同。
“视图(以及可能的实例化的ViewModels为他们”没有在视图模型,第一个场景。 – Euphoric 2011-03-29 10:31:55
感谢@euphoric。注意到,更新的问题。 – gideon 2011-03-29 11:01:53
感谢@giddy ......我知道我没有清楚地理解MVVM,但我开始做这个工作,由于一些原因。无论如何,我会得到它,这一次 – PawanS 2011-03-29 11:38:08