带有AutoGenerateColumns的WPF Datagrid中的ItemTemplateSelector

cac*_*cau 4 c# wpf datagrid mvvm itemtemplateselector

在我们的数据网格中,我们使用a ItemTemplateSelector根据绑定到特定单元格的数据在两个数据模板之间切换.

由于列数取决于我们AutoGenerateColumns在我们使用的当前数据集DataGrid.

看起来这种特殊的组合效果不好 -
甚至没有调用模板选择器.

我们可以在自动创建列的数据网格中使用模板选择器吗?

更具体地说:这是否可以使用XAML而不将逻辑放入代码隐藏文件或使用自定义行为?

我们的数据网格定义相当简单:

 <DataGrid
     ItemTemplateSelector="{StaticResource myCustomDataTemplateSelector}"
     ItemsSource="{Binding MyData}">
     <DataGrid.Columns>
     </DataGrid.Columns>
 </DataGrid>
Run Code Online (Sandbox Code Playgroud)

项目模板选择定义:

<UserControl.Resources>
    <ResourceDictionary>
        <helpers:CustomDataTemplateSelector x:Key="myCustomDataTemplateSelector"/>
    </ResourceDictionary>
</UserControl.Resources>
Run Code Online (Sandbox Code Playgroud)

Ert*_*maa 6

第一,

ItemTemplate和ItemTemplateSelector是在DataGrid中故意忽略的继承属性,因为它们并不像ItemsControl中那样真正应用于DataGrid.

其次,如果你的意思是你想根据它的值来修改单元格,你正在寻找CellTemplateSelector一个DataGridTemplateColumn.

但是,当您自动生成列时,它已自动选择基础类型.

您可以在GeneratingColumns事件中覆盖该行为.

请参阅:在WPF DataGrid自动生成列中使用CellTemplateSelector强制DataTemplateCell

如果您需要更多控制权,您可能需要查看https://zamjad.wordpress.com/2011/09/17/datagrid-with-dynamic-columns-revisited/