0

DataGridColumn - 유틸리티에서 자신의 사용자 지정 연결된 속성을 만들었습니다 : ADPs.IsCellSelected - 열에 셀이 선택되었는지 여부를 나타냅니다. 행에 대해서도 비슷하게 잘 작동합니다. 이제이 속성을 사용하여 전체 열을 변경하고 싶습니다. 배경 속성은 다음과 같습니다.CellTemplate의 DataTrigger에서 DataGridColumn 속성에 액세스

  <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 속성에 액세스 할 수 있습니까?

편집 : 그러므로이 경우 ElementName을 사용하여 DataTemplate을 외부의 요소를 참조 할 수 없습니다 또한, DataGridTemplateColumn는 UIElement에하지 않고 VisualTree 아닌, 는 "DataTemplate을 자체 NameScope 있습니다. 은 아마 내가 때문에 의도 무엇을 할 수있는 sno t을 TI 따라서 DataGridTemplateColumn은 DataTemplate에 정의 된 요소의 부모가 아닙니다 .DataGridTemplateColumn은 열 정의에 사용되며, DataGrid는 정의를 기반으로 헤더, 행 및 셀을 생성하지만 DataGridColumns는 렌더링되지 않습니다. " link

답변

0

전체 셀의 배경 속성을 선택한 셀로 변경하는 대신 열 머리글 배경 속성 만 변경합니다. 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>