WPF DataGrid AlternatingRowBackground переопределяет стиль DataTrigger для фона
У меня есть DataGrid, где я показываю много строк данных. Чтобы помочь визуально различать строки, я добавил цвет фона для чередующихся строк.
Но есть несколько строк, которые содержат очень интересные данные, на которые я хочу обратить внимание пользователя, и поэтому я использую Style DataTrigger, чтобы выделить эти конкретные строки.
Моя проблема в том, что чередующийся цвет фона имеет приоритет - только нечетные строки (без цвета фона) показывают выделение.
Обратите внимание, что это DataGrid с привязкой к данным, использующий шаблон MVVM (без "выделенного кода").
(Очень урезанный) код выглядит следующим образом:
<DataGrid ItemsSource="{Binding FilteredTraceMessages, Mode=OneWay}"
AlternatingRowBackground="AliceBlue"
.......>
<DataGrid.Columns>
....
</DataGrid.Columns>
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Style.Triggers>
<DataTrigger Binding="{Binding Severity}" Value="Error">
<Setter Property="Background" Value="LightSalmon"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding Severity}" Value="Warning">
<Setter Property="Background" Value="LemonChiffon"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
</DataGrid>
1 ответ
Вы должны установить Backround
на том же уровне приоритета. См. Список приоритетов настройки свойств зависимостей
удалять AlternatingRowBackground="AliceBlue"
от DataGrid
и положи AlternationCount="2"
там. Затем добавьте в первую очередь триггер для AlternationIndex
,
<DataGrid ItemsSource="{Binding FilteredTraceMessages, Mode=OneWay}" AlternationCount="2"
.......>
<DataGrid.Columns>
....
</DataGrid.Columns>
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Style.Triggers>
<Trigger Property="AlternationIndex" Value="1">
<Setter Property="Background" Value="AliceBlue"/>
</Trigger>
<DataTrigger Binding="{Binding Severity}" Value="Error">
<Setter Property="Background" Value="LightSalmon"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding Severity}" Value="Warning">
<Setter Property="Background" Value="LemonChiffon"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
</DataGrid>