我一直在为UserControls设置DataContext,如下所示:
<uc:DepartmentListingView DataContext="{Binding ., Mode=TwoWay}" />
基于sample project by Josh Smith我试图用DataTemplate和DataType完成同样的事情:
<!-- Template applies a DepartmentListingView to an instance of the DepartmentSelectionViewModel class. -->
<DataTemplate DataType="{x:Type model:DepartmentSelectionViewModel}">
<uc:DepartmentListingView />
</DataTemplate>
这很好用,但当然有问题;我认为可能是因为尝试将多个视图(UserControl)设置为相同的视图模型(?)。在下面的代码中,我现在将上面的相同viewModel与同一窗口中的不同视图相关联。
<DataTemplate DataType="{x:Type model:DepartmentSelectionViewModel}">
<uc:ListSubjectHeaderView />
</DataTemplate>
第一个视图的连线方式与我显式设置DataContext时相同,但最后一个视图没有绑定,但控制台中也没有明显的DataBinding错误。
那么,以这种方式重用DataType / DataTemplate技巧会成为问题吗?
谢谢,
Berryl
答案 0 :(得分:0)
理想情况下,您将在视图和视图模型之间建立一对一的关系。
为了获得你想要的东西,你可以在没有额外的情况下为你的viewmodel创建子类,并将子类viewmodel作为datatemplate中的数据类型。
这样只需创建正确的viewmodel就可以驱动正确的datatemplate,从而驱动用户控件