行が編集可能な場合、列の1つに「編集」ハイパーリンクを表示する必要があるWPF DataGridを使用しています-これは、行のバッキングモデルのブールフラグによって示されます。DataGridTemplateColumn を使用してこれを達成できました - 問題ありません。ただし、行全体に対する追加の要件は、行が選択されたときにハイライトを表示しないことです (これはデフォルトで青色の背景です)。透明な背景を持つ DataGridCell スタイルを定義することで、他の列でこれを実現できました。
<DataGridTextColumn
Header="Id"
Binding="{Binding Path=Id}"
HeaderStyle="{StaticResource DataGridColumnHeaderStyle}"
CellStyle="{StaticResource DataGridCellStyle}" />
ここで、DataGridCellStyle は次のように定義されます。
<Style x:Key="DataGridCellStyle" TargetType="{x:Type DataGridCell}">
<Setter Property="Background" Value="Transparent" />
...
</Style>
ただし、問題の列である DataGridTemplateColumn には、選択のハイライトをオフにするために使用できる「CellStyle」属性がありません。だから私の質問は、DataGridTemplateColumn を使用するときにセル スタイルを設定する方法ですか? 最初の要件を満たす列の実装を次に示します (つまり、行が編集可能な場合は「編集」ハイパーリンクを表示します)。
<DataGridTemplateColumn
Header="Actions"
HeaderStyle="{StaticResource CenterAlignedColumnHeaderStyle}">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock
Visibility="{Binding Path=Editable, Converter={StaticResource convVisibility}}"
Style="{StaticResource CenterAlignedElementStyle}">
<Hyperlink
Command="..."
CommandParameter="{Binding}">
<TextBlock Text="Edit" />
</Hyperlink>
</TextBlock>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
ありがとう。