Фон DataGridRow изменяется при выборе

Внимательно осмотревшись, я нахожу людей, которые не знают, как изменить фон строки при выборе, в то время как я пытаюсь выяснить, как предотвратить изменение цвета при выборе.
У меня есть DataGrid с динамически генерируемыми столбцами (что делает стиль несколько сложной задачей для меня), которые содержат MyObjects, objectсо свойством IsDeleted. Это свойство (как это предполагает) отслеживает, удален ли этот MyObject или нет, и, таким образом, если это фон должен быть красным.

<Style.Triggers>
      <DataTrigger Binding="{Binding IsDeleted}" Value="True">
             <Setter Property="Background" Value="red"/>
      </DataTrigger>
</Style.Triggers>

Однако, когда я выбираю строку, которая удаляется, » фон » изменится на синий (очевидно, потому, что он выбран), что несколько затрудняет идентификацию удаленных MyObjects. Я читал некоторые предложения С Property="OverrideDefault.SelectionBackground" Value="Red"и такие, но те, казалось, не работает для меня.

Я, вероятно, упускаю что-то очевидное, но, пожалуйста, имейте в виду, что DataGrid генерируется динамически, поэтому операторы должны быть несколько динамичными

1 ответ

  1. Возможно, попробуйте использовать ColorAnimation:

    <Style x_Key="CustomDataGridRowStyle" TargetType="{x:Type DataGridRow}">
        <Setter Property="IsSelected" Value="{Binding Mode=TwoWay, Path=IsSelected}"/>
        <Setter Property="Validation.ErrorTemplate" Value="{x:Null}" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type DataGridRow}">
                    <Border x_Name="DGR_Border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" SnapsToDevicePixels="True" Background="White">
                        <VisualStateManager.VisualStateGroups>
                            <VisualStateGroup x_Name="CommonStates">
                                <VisualState x_Name="Normal"/>
                                <VisualState x_Name="Normal_Selected">
                                    <Storyboard>
                                        <ColorAnimation Storyboard.TargetName="DGR_Border"
                                                        Storyboard.TargetProperty="Background.Color"
                                                        Duration="0:0:0.5"
                                                        To="Transparent" />
                                    </Storyboard>
                                </VisualState>
                                <VisualState x_Name="MouseOver">
                                    <Storyboard>
                                        <ColorAnimation Storyboard.TargetName="DGR_Border"
                                                        Storyboard.TargetProperty="Background.Color"
                                                        Duration="0:0:0.5"
                                                        To="LightGray" />
                                    </Storyboard>
                                </VisualState>
                            </VisualStateGroup>
                        </VisualStateManager.VisualStateGroups>
                        <DataGridCellsPresenter ItemsPanel="{TemplateBinding ItemsPanel}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
    

    Когда «Normal_Selected» цвет его с wahtever цвет вы хотите.