DataTemplate DataType用法WPF

时间:2010-07-08 03:20:59

标签: wpf types datatemplate

我一直在为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

1 个答案:

答案 0 :(得分:0)

理想情况下,您将在视图和视图模型之间建立一对一的关系。

为了获得你想要的东西,你可以在没有额外的情况下为你的viewmodel创建子类,并将子类viewmodel作为datatemplate中的数据类型。

这样只需创建正确的viewmodel就可以驱动正确的datatemplate,从而驱动用户控件