Tôi gặp vấn đề này và tôi suýt xé tóc ra, và tôi không thể tìm được câu trả lời thích hợp trên mạng. Tôi đã cố gắng kiểm soát màu nền của hàng đã chọn trong WPF DataGrid. Nó sẽ không làm điều đó. Trong trường hợp của tôi, lý do là tôi cũng có một CellStyle trong datagrid của mình và CellStyle đã vượt qua RowStyle mà tôi đang thiết lập. Điều thú vị là, bởi vì CellStyle thậm chí còn không đặt màu nền, mà thay vào đó là bing được đặt bởi các thuộc tính RowBackground và AlternateRowBackground. Tuy nhiên, cố gắng đặt màu nền của hàng đã chọn hoàn toàn không hoạt động khi tôi thực hiện việc này:
<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>
và nó đã hoạt động khi tôi chuyển kiểu mong muốn cho hàng đã chọn ra khỏi kiểu hàng và sang kiểu ô, như vậy:
<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>
Chỉ cần đăng bài này trong trường hợp ai đó có cùng một vấn đề.