我在 DataGridColumn 上创建了自己的自定义附加属性 - utility: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 显示错误“无法识别名称 MyColumn。”。知道如何从“单元格”访问我新附加的 DataGridColumn 属性吗?
编辑:可能我不知道我的意图是什么,因为:“DataTemplate 有自己的 NameScope,因此您不能使用 ElementName 引用 DataTemplate 之外的元素。此外,DataGridTemplateColumn 不是 UIElement 并且不在 VisualTree 中,因此 DataGridTemplateColumn 不是父级在 DataTemplate 中定义的元素。DataGridTemplateColumn 仅用于定义列。DataGrid 然后根据定义生成标题、行和单元格,但 DataGridColumns 永远不会被呈现。 关联