Доступ к свойству DataGridColumn из DataTrigger в CellTemplate

Я создал собственное настраиваемое присоединенное свойство в 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 никогда не визуализируются». ссылка


person Marek S.    schedule 09.11.2017    source источник


Ответы (1)


Вместо того, чтобы изменить свойство фона всего столбца с выбранной ячейкой, я меняю только свойство фона заголовка столбца. Я использую свое собственное прикрепленное свойство в DataGridColumnHeader - утилиты: ADPs.IsCellSelected, а затем выделяю заголовок

<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>
person Marek S.    schedule 10.11.2017