WPF DataGrid AlternatingRowBackground переопределяет стиль DataTrigger для фона - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть DataGrid, где я показываю много строк данных.Чтобы помочь визуально различать строки, я добавил цвет фона для чередующихся строк.

Но есть ряд строк, которые содержат очень интересные данные, на которые я хочу обратить внимание пользователя, и поэтому я использую Style DataTrigger, чтобы выделить эти конкретные строки.

Моя проблема в том, чточередующийся фоновый цвет имеет приоритет - только нечетные строки (без цветного фона) показывают выделение.

Обратите внимание, что это DataGrid с привязкой к данным, использующий шаблон MVVM (без «code-behind»).

(очень урезанный) код выглядит следующим образом:

<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 Ответ

0 голосов
/ 07 февраля 2019

Вы должны установить 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...