如何在鼠标悬停时为 DataGrid 行的背景颜色设置一次动画?

问题描述 投票:0回答:0

我有一个 DataGrid,上面有一些行。添加新行时,我想将背景设置为一些明亮的值,以向用户显示这些行是新添加的。当用户将鼠标悬停在一行上时,将其动画回正常颜色(透明)。

示例模型

public class Package
{
    public string Name { get; set; }
    public bool IsOversea { get; set; }
    public DateTime TimeOfArrival { get; set; }
}

现在,我所能做的就是将一种颜色从当前颜色设置为透明。

<Style TargetType="DataGridRow" BasedOn="{StaticResource {x:Type DataGridRow}}">
    <Setter Property="Background" Value="ForestGreen"/>
    <Style.Triggers>
        <EventTrigger RoutedEvent="MouseEnter">
            <BeginStoryboard>
                <Storyboard>
                    <ColorAnimation Storyboard.TargetProperty="(DataGridRow.Background).(SolidColorBrush.Color)" 
                                    Duration="00:00:02"
                                    To="Transparent"
                                    />
                </Storyboard>
            </BeginStoryboard>
        </EventTrigger>
    </Style.Triggers>
</Style>

但是如果该行有

IsOversea == true
.

,我只想触发一次这个动画

如果可能的话,我也想将起始背景颜色绑定到一个属性。如果包裹已经等待交货超过 1 个月,则为红色,如果超过 1 周,则为黄色,一天为绿色。

c# wpf xaml animation datagrid
© www.soinside.com 2019 - 2024. All rights reserved.