【发布时间】:2023-03-27 00:18:01
【问题描述】:
我对如何使用两个不同的用户控件创建主从视图有点困惑。
一共有三种选择,
选择 1
CustomerMasterView + CustomerMasterViewModel
CustomerDetailView + CustomerDetailViewModel
并将两个视图模型保留在 App.Resources 中
但是这样做,所有静态资源源标记代码的绑定变得复杂。
选择 2
CustomerViewModel
CustomerMasterView
CustomerDetailView
两个视图通过 App.Resources 共享相同的 ViewModel,即使绑定代码有太多项目。
选择 3
CustomerMasterView + CustomerMasterViewModel
CustomerDetailView + CustomerDetailViewModel
两个视图都将 DataContext 设置为它们对应的 ViewModel。现在这是一个小问题, CustomerMasterView 有 Selector(ListBox 或 DataGrid 或其他),其 SelectedItem 需要作为双向绑定绑定到 CustomerDetailViewModel 的“Customer”属性。
好看吗?
<!-- CustomerMasterView -->
<ListBox
ItemsSource="{Binding CustomerList}"
SelectedItem="{Binding DataContext.Customer,ElementName=customerDetailView}"
/>
<local:CustomerDetailView
x:Name="customerDetailView"
/>
但是这样做,我违背了 ViewModel 的目的,因为它在我的 UI 代码中添加了更多的依赖性。
哪一种是最首选的方式,或者还有其他方式吗? 我应该创建嵌套视图模型吗?
我也在尝试学习 Prism,我对如何正确地做到这一点没有什么困惑,任何帮助都会得到帮助。
【问题讨论】:
标签: silverlight data-binding mvvm prism