У меня была эта проблема, я чуть не вырвал себе волосы, и я не смог найти подходящий ответ в сети. Я пытался контролировать цвет фона выбранной строки в WPF DataGrid. Это просто не сработает. В моем случае причина заключалась в том, что у меня также был CellStyle в моей сетке данных, и CellStyle переопределял RowStyle, который я устанавливал. Это интересно, потому что CellStyle даже не устанавливал цвет фона, который вместо этого был задан свойствами RowBackground и AlternateRowBackground. Тем не менее, попытка установить цвет фона выбранной строки вообще не сработала, когда я сделал это:
<DataGrid ... >
<DataGrid.RowBackground>
...
</DataGrid.RowBackground>
<DataGrid.AlternatingRowBackground>
...
</DataGrid.AlternatingRowBackground>
<DataGrid.RowStyle>
<Style TargetType="{x:Type DataGridRow}">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="Pink"/>
<Setter Property="Foreground" Value="White"/>
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
<DataGrid.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<Setter Property="Foreground" Value="{Binding MyProperty}" />
</Style>
</DataGrid.CellStyle>
и это сработало, когда я переместил желаемый стиль для выбранной строки из стиля строки в стиль ячейки, например:
<DataGrid ... >
<DataGrid.RowBackground>
...
</DataGrid.RowBackground>
<DataGrid.AlternatingRowBackground>
...
</DataGrid.AlternatingRowBackground>
<DataGrid.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<Setter Property="Foreground" Value="{Binding MyProperty}" />
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="Pink"/>
<Setter Property="Foreground" Value="White"/>
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.CellStyle>
Просто разместите это на случай, если у кого-то такая же проблема.