【问题标题】:DataTemplate DataType usage WPFDataTemplate DataType 使用 WPF
【发布时间】:2010-07-08 03:20:59
【问题描述】:

我一直在为 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 技巧会是问题吗?

谢谢,
浆果

【问题讨论】:

    标签: wpf types datatemplate


    【解决方案1】:

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

    要获得您想要的东西,可能不需要额外的子类化您的视图模型,并将该子类化的视图模型作为数据模板中的数据类型。

    这样,创建正确的视图模型将驱动正确的数据模板,从而驱动用户控制

    【讨论】:

    • 感谢您的回复,但即使它有效,这似乎也很hacky。我从不同的角度提出了一个相关的问题here 我试图内联模板。还有其他想法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-22
    • 1970-01-01
    • 2021-01-08
    • 2016-03-26
    • 1970-01-01
    • 1970-01-01
    • 2012-09-12
    相关资源
    最近更新 更多