我有像图像的视图,ViewModel有命令来处理按钮(1,2,3,4)点击。在工作区域允许用户提供输入。根据输入用户的不同,单击按钮;
每个Button引导一个新窗口(View with ViewModel;其模型将从输入中获取)。新窗口有自己的逻辑来显示数据,具体取决于注入ViewModel的模型。
根据MVVM标准,我在哪里为每个Button指定相应的View和ViewModel? (在视图/视图模型中)。 我该如何指定相同的?
答案 0 :(得分:0)
ViewModel基本上是View和Model之间的链接,因此View和Model的每个组合都应该有一个单独的ViewModel(如果有效)。
根据我的经验,在大多数情况下,我们处理两种观点:
对于小视图,常见的ViewModel可用于多个视图。但对于大型视图(考虑未来可能发生的变化),最好不要使用单个共享ViewModel。但是,使用基本ViewModel类来实现某些共享功能(如果有的话)是有帮助的。
因此,请记住并专注于保持标准,我建议:
ViewModels for secondary windows
:(根据我认为你需要的问题4)每个人都有自己独立的功能(你可以从BaseWindowVm派生出来)。这里的做法不是让他们知道他们的父(MainWindowVm
),只是在实例化时设置他们的事件处理程序。这样就可以避免代码耦合。
MainWindowVm
:由4个命令和一些其他输入组成。每个命令都执行以下步骤:
ViewModel for secondary window
MainWindowVm
中的某个列表中(如果您想跟踪这些窗口)最重要的部分是,由于ViewModels相互通信,因此将视图相互链接只会使其更复杂,更难以管理。所以视图就像是与ViewModel绑定的岛屿,其他一切都取决于ViewModels。