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プロパティ "セル"からアクセスすることができますか?

EDIT:ので、あなたがのElementNameを使用するDataTemplate外の要素を参照することはできません。また、DataGridTemplateColumnがUIElementのではなく、VisualTreeではないが、 は「DataTemplateをは独自のNameScopeのがあります。 は、おそらく私はので、私はつもり何可能SNOトンをTIしたがって、DataGridTemplateColumnはDataTemplateで定義された要素の親ではありません。DataGridTemplateColumnは列を定義するためだけに使用され、DataGridは定義に基づいてヘッダー、行、およびセルを生成しますが、DataGridColumnsはレンダーされません。 link

答えて

0

代わりに、選択したセルで列全体の背景プロパティを変更するには、列ヘッダーの背景プロパティのみを変更します。私は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> 
関連する問題