2014-04-05 58 views
0

See the image其他视图依赖关系?

我有视图像图像和ViewModel有处理按钮(1,2,3,4)点击的命令。在工作区域允许用户输入。根据输入的用户可以单击按钮;

每个按钮都会引导一个新窗口(View with ViewModel;其模型将从输入中获取)。新窗口有自己的逻辑来显示数据,取决于注入ViewModel的模型。

根据MVVM标准,我应该在哪里为每个按钮指定相应的View和ViewModels? (在View/View模型中)。 我如何指定相同的?

+0

你必须使用PRISM为这取决于你要求你的工作区,然后加载模块/视图定义区域。 – Firoz

+0

感谢您的回复。我有红色的一些关于你的答复的信息。但有没有其他直接的方法(而不是使用棱镜/ MVVM光)?因为我们已经构建了应用程序。现在转换所有编码并不容易。 – vaduganathan

+0

你展示你在这里表现出的视图顶部的观点窗口(Window.Show()或Window.ShowDialog()),或者是在工作区中显示的视图? – user3411327

回答

0

基本上,ViewModel是View和Model之间的一个链接,因此View和Model的每个组合都应该有一个独立的ViewModel(如果有效)。

在我的经验,在大多数情况下,我们正在处理二种意见:

  1. 小意见如图标,先进的按钮等(这是更孤立,更容易有没有参考他们的父母,使他们易于管理和推广)
  2. 大的意见如窗口,面板(其中有很多的孩子,更容易在以后进行更改)

对于小视图普通ViewModels可以用于多个视图。但对于大视图(考虑将来可能发生的变化),最好不要使用单个共享ViewModel。然而,使用基本ViewModel类来实现一些共享功能(如果有的话)会很有帮助。

所以牢记这一点和聚焦留标准,我建议:

  • ​​3210:(根据我想你需要4个问题)都有其独立的功能(你可以得到所有这些一个BaseWindowVm)。在这里最好的做法不是让他们知道他们的父母(MainWindowVm),只是设置他们的事件处理程序实例化时。这样你可以避免代码耦合。

  • MainWindowVm:由4个命令和一些其他输入组成。每个命令执行下列步骤操作:

    1. 实例化一个视图
    2. 实例基于输入
    3. 一套虚拟机的事件处理程序ViewModel for secondary window
    4. 分配虚拟机的DataContext视图
    5. 添加虚拟机的一些列表MainWindowVm(如果你想跟踪这些窗口)
    6. ShowDialog()

最重要的部分是,由于ViewModel彼此通信,所以将Views与相互链接只会使其更复杂,更难以管理。所以视图就像对其ViewModel绑定的岛屿,其他所有视图都是ViewModels。