在WPF中的故事板彩色动画之后回到旧的颜色
问题描述:
我有一个datagrid,其中的行颜色由我在我的rowstyle中转换的级别参数决定。这很好,但现在我也想在使用鼠标进行拖放时暂时改变颜色并拖放(当我离开或放下时改回)。我设法改变颜色与此代码:在WPF中的故事板彩色动画之后回到旧的颜色
<DataGrid.RowStyle>
<Style TargetType="DataGridRow" BasedOn="{StaticResource MyDataGridRowStyle}">
<Setter Property="Background" Value="{Binding Level,Converter={StaticResource LevelToIndentConverter}}" />
<Style.Triggers>
<EventTrigger RoutedEvent="DataGridRow.DragEnter">
<BeginStoryboard x:Name="DragHoverStoryboard">
<Storyboard>
<ColorAnimation Storyboard.TargetProperty="Background.Color"
Duration="0:0:0" To="#41B1E1"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
<EventTrigger RoutedEvent="DataGridRow.DragLeave">
<BeginStoryboard>
<Storyboard>
<ColorAnimation Storyboard.TargetProperty="Background.Color"
Duration="0:0:0" To="Transparent" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
问题是要回到原来的颜色。目前,我在DragLeave事件触发器中将“To”设置为透明,但我希望它是我的“旧”颜色。
我试图做一个简单的绑定(与我的setter相同),但我得到异常,并阅读,你不能绑定彩色动画。那么有什么我可以使用或解决这个问题吗?总之我只是想这样的:
- 鼠标进入一行拖放
- 行改变颜色X
- 鼠标离开行(或我滴)
- 行变回它的颜色Y(其中y对于不同的行是不同的,所以不是硬编码的)。
答
然后属性添加到您的动画和删除第二个动画
FillBehavior="Stop"
哎,对不起,我忘了/是有点不清楚。这是当我做拖放,然后我认为我必须做EventTriggers?如果不是解决方案会奏效。我更新了这个问题,使其更加明显。 – user1776562