例如,我有几个视图,每个视图都有viewmodel,然后我的mainviewmodel将处理所有这些视图,以供我导航或加载到mainwindow。我是否绕过了MVVM的规则?因为有一个mainviewmodel知道我所有的观点?
进行MVVM设计的方法有两种:先查看和先查看模型。尽管它们都是有效的,但它们都有起有落。两者都确保视图模型不以任何方式依赖于视图,而仅视图依赖于视图模型。您的解决方案是有效的MVVM,但会导致视图和视图模型层之间出现循环依赖关系。所以我建议坚持
您可以从MainWindow.xaml开始,然后根据需要进行设计。您可以通过添加实例化视图代码中每个窗口/对话框/控件的视图模型
<MainWindow.DataContext>
<vm:MainViewModel>
</MainWindow.DataContext>
进入XAML并开始绑定所有状态,以便可以将行为移入该MainViewModel类。
这种方法的升级版使用了依赖项注入容器(autofac,ninject等)来实例化MainViewModel,而MainWindow并未真正知道视图模型的具体类型。
在bootstrapper中,您将以某种方式将MainWindow.DataContext设置为其视图模型的实例,但是否则,您将依赖于DataTemplate实例化视图(抱歉,无法使用DataTemplate实例化Window)。
视图模型中的每个可绑定属性都可以绑定到ContentPresenter,视图模型中的每个可绑定集合都可以绑定到ItemPresenter的子类(ListBox,ComboBox等),您差不多完成了。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句