DataGridRow背景在选择时更改

时间:2016-09-29 15:28:44

标签: c# wpf xaml

在仔细观察之后,我只是找到了那些在选择时不知道如何改变行背景的人,而我却试图找出如何预防它的方法。在选择颜色时改变颜色 我有一个动态生成列的DataGrid(这使得样式对我来说有点挑战),它包含MyObjects,object具有属性IsDeleted。此属性(如它所示)会跟踪此MyObject是否被删除,因此它的背景是否需要为红色。

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

但是,当我选择一个已删除的行时,&#39;背景&#39;将变为蓝色(显然,因为它被选中),这使得识别已删除的MyObjects有些困难。我已经阅读了Property="OverrideDefault.SelectionBackground" Value="Red"之类的一些建议,但这些建议似乎并不适用于我。

我可能忽略了一些显而易见的事情,但请记住DataGrid是动态生成的,因此语句必须有点动态

1 个答案:

答案 0 :(得分:0)

也许尝试使用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'为您想要的颜色添加颜色时。