Windows7でVisualStudio2012を使用しています。グリッドで選択した行の次のスタイルが背景色と前景色では機能しないが、BorderBrushやBorderThicknessなどの他のプロパティでは完全に機能する理由を知る必要があります。グリッド行の上にマウスを置くと、それらが変化するのを見ることができますが。
<Style x:Key="gridRowStyle" TargetType="{x:Type DataGridRow}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="PeachPuff"/>
<Setter Property="Foreground" Value="BlueViolet"/>
</Trigger>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="PeachPuff"/>
<Setter Property="Foreground" Value="BlueViolet"/>
<Setter Property="BorderBrush" Value="BlueViolet" />
<Setter Property="BorderThickness" Value="2" />
</Trigger>
</Style.Triggers>
</Style>
これが私がグリッドで使用している方法です。
<DataGrid RowStyle="{StaticResource gridRowStyle}">
次のように行スタイルの代わりにグリッドセルスタイルを使用すると、問題の解決策がすでにあるため、問題の解決策ではなく「理由」を知ることに重点を置いています。
<Style x:Key="gridCellStyle" TargetType="{x:Type DataGridCell}">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="PeachPuff"/>
<Setter Property="Foreground" Value="BlueViolet"/>
</Trigger>
</Style.Triggers>
</Style>