Я создал собственное настраиваемое присоединенное свойство в DataGridColumn — утилиты: 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, поэтому вы не можете ссылаться на элемент вне DataTemplate, используя ElementName. Более того, DataGridTemplateColumn не является UIElement и не находится в VisualTree, поэтому DataGridTemplateColumn не является родительским ваших элементов, определенных в DataTemplate. DataGridTemplateColumn используется только для определения столбцов. Затем DataGrid генерирует заголовки, строки и ячейки на основе определений, но DataGridColumns никогда не визуализируются». ссылка