更新时间:2022-12-27 15:27:57
首先,
ItemTemplate和ItemTemplateSelector是继承的属性,
在DataGrid中被故意忽略,因为它们并不真正适用于
DataGrid,它们的意思是到$ Items $。
$ p
如果你的意思是要根据其价值来修改单元格模板,那么你是在DataGridTemplateColumn
上查找CellTemplateSelector
。但是,当您自动生成列时,它已经自动选择底层类型。您可以覆盖在
GeneratingColumns
事件中的行为。参见:在WPF中使用CellTemplateSelector的DataTemplateCell DataGrid自动生成的列
如果需要更多的控制,您可能需要查看 https://zamjad.wordpress.com/2011/09/17/ datagrid-with-dynamic-columns-revisited /
In our data grid we're using an
ItemTemplateSelector
to switch between two data templates based on the data bound to a particular cell.As the number of columns depends on the current data set we're using
AutoGenerateColumns
in ourDataGrid
.It appears that this particular combination does not work well -
the template selector isn't even called.Can we use the template selector in a data grid where columns are created automatically?
More specifically: Is this possible using XAML only w/o putting logic into the code-behind file or using custom behaviours?
Our data grid definition is fairly trivial:
<DataGrid ItemTemplateSelector="{StaticResource myCustomDataTemplateSelector}" ItemsSource="{Binding MyData}"> <DataGrid.Columns> </DataGrid.Columns> </DataGrid>
The item template selector definition:
<UserControl.Resources> <ResourceDictionary> <helpers:CustomDataTemplateSelector x:Key="myCustomDataTemplateSelector"/> </ResourceDictionary> </UserControl.Resources>
First,
ItemTemplate and ItemTemplateSelector are inherited properties which are purposely ignored in the DataGrid since they don't really apply to DataGrid in the way that they were meant to in ItemsControl.
Secondly, if you mean that you want to modify cell templae based on its value, you are looking for
CellTemplateSelector
, on aDataGridTemplateColumn
.However, when you auto-generate columns, it already chooses the underlying types automatically.
You can override that behavior in
GeneratingColumns
event.See this: Force DataTemplateCell with CellTemplateSelector in WPF DataGrid Autogenerated columns
If you need more control, you might want to take a look at https://zamjad.wordpress.com/2011/09/17/datagrid-with-dynamic-columns-revisited/