我有视图像图像和ViewModel有处理按钮(1,2,3,4)点击的命令。在工作区域允许用户输入。根据输入的用户可以单击按钮;
每个按钮都会引导一个新窗口(View with ViewModel;其模型将从输入中获取)。新窗口有自己的逻辑来显示数据,取决于注入ViewModel的模型。
根据MVVM标准,我应该在哪里为每个按钮指定相应的View和ViewModels? (在View/View模型中)。 我如何指定相同的?
我有视图像图像和ViewModel有处理按钮(1,2,3,4)点击的命令。在工作区域允许用户输入。根据输入的用户可以单击按钮;
每个按钮都会引导一个新窗口(View with ViewModel;其模型将从输入中获取)。新窗口有自己的逻辑来显示数据,取决于注入ViewModel的模型。
根据MVVM标准,我应该在哪里为每个按钮指定相应的View和ViewModels? (在View/View模型中)。 我如何指定相同的?
基本上,ViewModel是View和Model之间的一个链接,因此View和Model的每个组合都应该有一个独立的ViewModel(如果有效)。
在我的经验,在大多数情况下,我们正在处理二种意见:
对于小视图普通ViewModels可以用于多个视图。但对于大视图(考虑将来可能发生的变化),最好不要使用单个共享ViewModel。然而,使用基本ViewModel类来实现一些共享功能(如果有的话)会很有帮助。
所以牢记这一点和聚焦留标准,我建议:
3210:(根据我想你需要4个问题)都有其独立的功能(你可以得到所有这些一个BaseWindowVm)。在这里最好的做法不是让他们知道他们的父母(MainWindowVm
),只是设置他们的事件处理程序实例化时。这样你可以避免代码耦合。
MainWindowVm
:由4个命令和一些其他输入组成。每个命令执行下列步骤操作:
ViewModel for secondary window
MainWindowVm
(如果你想跟踪这些窗口)最重要的部分是,由于ViewModel彼此通信,所以将Views与相互链接只会使其更复杂,更难以管理。所以视图就像对其ViewModel绑定的岛屿,其他所有视图都是ViewModels。
你必须使用PRISM为这取决于你要求你的工作区,然后加载模块/视图定义区域。 – Firoz
感谢您的回复。我有红色的一些关于你的答复的信息。但有没有其他直接的方法(而不是使用棱镜/ MVVM光)?因为我们已经构建了应用程序。现在转换所有编码并不容易。 – vaduganathan
你展示你在这里表现出的视图顶部的观点窗口(Window.Show()或Window.ShowDialog()),或者是在工作区中显示的视图? – user3411327