我对如何使用两个不同的用户控件创建主细节视图有点困惑。如何使用MVVM中的两个用户控件创建主详图视图?
有三种选择,
选择1
CustomerMasterView + CustomerMasterViewModel
CustomerDetailView + CustomerDetailViewModel
并保持两视图模型在App.Resources
但是通过这样做,结合变得复杂了所有静态资源来源标记代码。
选择2
CustomerViewModel
CustomerMasterView
CustomerDetailView
这两种观点都通过App.Resources共享同一个视图模型,以及即使绑定代码有太多的项目。
选择3
CustomerMasterView + CustomerMasterViewModel
CustomerDetailView + CustomerDetailViewModel
两个视图的已设置的DataContext到其对应的视图模型。现在这里是小问题, CustomerMasterView具有Selector(ListBox或DataGrid或其他),其SelectedItem需要绑定到CustomerDetailViewModel的“Customer”属性作为双向绑定。
它看起来不错吗?
<!-- CustomerMasterView -->
<ListBox
ItemsSource="{Binding CustomerList}"
SelectedItem="{Binding DataContext.Customer,ElementName=customerDetailView}"
/>
<local:CustomerDetailView
x:Name="customerDetailView"
/>
但是,这样做,因为它在我的UI代码将更加依赖我不畏视图模型的目的。
哪一个是最喜欢的方式还是有其他方法? 我应该创建嵌套视图模型吗?
我也在尝试学习棱镜,而且我对如何做到这一点没有什么困惑,任何帮助都将被评价。
相反,我使用ActiveItem的嵌套视图模型,因为详细视图模型已经有很多东西了。 – 2010-11-03 13:03:18