You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WPF中如何为DataGridTemplateColumn绑定带类型条件的多DataTemplate

纯XAML实现DataGrid列根据数据类型自动匹配DataTemplate

你可以直接利用WPF的隐式DataTemplate机制,结合ContentPresenter实现需求,完全不需要后台代码或DataTemplateSelector:

  1. 保留你已定义的无x:Key的隐式DataTemplate(它们会根据数据类型自动匹配):
<Grid.Resources>
    <DataTemplate DataType="{x:Type models:Material}">
        <TextBlock Text="{Binding Value}" 
                   Foreground="White"
                   Background="Gray"
        />
    </DataTemplate>
    <DataTemplate DataType="{x:Type models:Usage}">
        <TextBlock Text="{Binding Value}"  
                   Foreground="White"
                   Background="Brown"
        />
    </DataTemplate>
</Grid.Resources>
  1. 在DataGridTemplateColumn的CellTemplate中使用ContentPresenter,绑定当前行的数据:
<DataGridTemplateColumn Header="Value">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <!-- 绑定行数据后,WPF会自动匹配对应DataType的隐式模板 -->
            <ContentPresenter Content="{Binding}" />
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

原理说明

当ContentPresenter的Content绑定到Material或Usage类型的实例时,WPF会自动在当前资源作用域内查找对应DataType的隐式DataTemplate,并将其应用到单元格中,无需手动指定模板Key,也不需要额外的后台逻辑。

内容的提问来源于stack exchange,提问作者Roland Kwee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 18:57:07