一种模式的几种观点?

问题描述:

在我的主窗口中,我有几个用户控件。一个用于菜单,另一个根据菜单选择具有可变内容。用MVVM处理这个问题的好方法是什么?这两个用户控件是否都有自己的视图模型?但是,如何从菜单视图模型获取信息到内容视图模型?或者我应该在整个窗口中只使用一个视图模型?一种模式的几种观点?

这就导致了一个更普遍的问题:如果我使用我的程序几个地方相同的信息,我该如何处理这个问题?两个独立的视图如何访问相同的模型实例?我是否需要使该模型静态?

+0

您可以将视图模型到DataContext。同样使用继承为ViewModel提供一个新名称NewViewModel:CommonViewModel可能适用于您。 – kenny

+1

不要将它设为静态,将您的对象注入需要它的视图中。 –

+2

会推荐一个视图模型层次结构,然后您可以将页面的一部分绑定到主视图模型上的子视图模型。 –

都应该用户控件有自己的视图模型?

除非有问题的操作非常进程驱动的控制,最好是有工作的控制了他们的声明仅仅dependency properties并没有indvidual虚拟机。

同样的信息在我的程序中的几个地方,我该如何处理?

不要过时绑定它,创建一个虚拟机,初始化并将其作为静态放置到应用程序中,然后从其他需要它的虚拟机访问它。

然后在代码的任何地方可以通过从全球Application.Current Property (System.Windows)这将有静态虚拟机属性,该属性将持有的共享VM取得运行的应用程序。