我在DataGridColumn上创建了自己的自定义附加属性 - utilities:ADPs.IsCellSelected以指示是否在列中选择了任何单元格。我做了类似的行,它工作正常。 现在我想使用此属性来更改整个列,例如背景属性如:
<DataGridTemplateColumn x:Name="MyColumn" Header="Test">
<DataGridTemplateColumn.CellStyle>
<Style TargetType="DataGridCell" BasedOn="{StaticResource BaseCell}">
<Setter Property="Background" Value="Black"/>
</Style>
</DataGridTemplateColumn.CellStyle>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate x:Uid="DataTemplate_3">
<TextBlock x:Name="trg" Text="some text" />
<DataTemplate.Triggers>
<Trigger SourceName="MyColumn" Property="utilities:ADPs.IsCellSelectedColumn" Value="True">
<Setter TargetName="trg" Property="Background" Value="Red"/>
</Trigger>
</DataTemplate.Triggers>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
但VS显示错误&#34;名称MyColumn无法识别。&#34;。知道如何从&#34; cells&#34;?中访问我新添加的DataGridColumn属性。
编辑: 可能我认为可能是我想要的,因为: &#34; DataTemplate有自己的NameScope,因此您无法使用ElementName引用DataTemplate外部的元素。此外,DataGridTemplateColumn不是UIElement,也不在VisualTree中,因此DataGridTemplateColumn不是DataTemplate中定义的元素的父级。 DataGridTemplateColumn仅用于定义列。然后,DataGrid根据定义生成标题,行和单元格,但DataGridColumns永远不会被渲染。&#34; link
答案 0 :(得分:0)
而是使用所选单元格更改整列的Background属性,我只更改列标题Background属性。我在DataGridColumnHeader上使用我的自定义附加属性 - 实用程序:ADPs.IsCellSelected然后highligth标题
<DataGridTemplateColumn.HeaderStyle>
<Style TargetType="DataGridColumnHeader">
<Style.Triggers>
<Trigger Property="utilities:ADPs.IsCellSelected" Value="True">
<Setter Property="Background" Value="Red"/>
</Trigger>
</Style.Triggers>
</Style>
</DataGridTemplateColumn.HeaderStyle>