在仔细观察之后,我只是找到了那些在选择时不知道如何改变行背景的人,而我却试图找出如何预防它的方法。在选择颜色时改变颜色
我有一个动态生成列的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是动态生成的,因此语句必须有点动态
答案 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'为您想要的颜色添加颜色时。