我是全新的WPF动画,目前我面临很大的问题。
我有一个TextBlock,只要一个属性到我的视图模型有一个特定的值,我就想运行一个背景色的ColorAnimation。当属性的值发生变化时,我希望TextBlock的背景色返回到原来的背景色(可能是透明的)。这是我到目前为止所发现的,但仍然没有像我描述的那样起作用。
<TextBlock Text="{Binding DatabaseTasks.Count, StringFormat= 'Count: {0}'}" VerticalAlignment="Center" Background="Transparent">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Style.Triggers>
<DataTrigger Binding="{Binding IsIdle}" Value="False">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard Storyboard.TargetProperty="(TextBlock.Background).(SolidColorBrush.Color)">
<ColorAnimation RepeatBehavior="Forever"
FillBehavior="Stop"
From="Red"
To="Transparent"
By="Blue"
Duration="0:0:0.5" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>有人能解决这个问题吗?
提前谢谢你!
编辑:绑定工作得很好,我使用一个简单的DataTrigger测试它,它只改变背景色。我的问题是动画不会停止并返回到原来的颜色。我肯定我错过了什么。
发布于 2011-07-06 09:38:59
添加RemoveStoryboard标记应该可以做到这一点。
<Style TargetType="TextBlock">
<Style.Triggers>
<DataTrigger Binding="{Binding IsIdle}" Value="False">
<DataTrigger.EnterActions>
<BeginStoryboard x:Name="tt" >
<Storyboard Storyboard.TargetProperty="(TextBlock.Background).(SolidColorBrush.Color)">
<ColorAnimation RepeatBehavior="Forever"
FillBehavior="Stop"
From="Red"
To="Transparent"
By="Blue"
Duration="0:0:0.5" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
<DataTrigger.ExitActions>
<RemoveStoryboard BeginStoryboardName="tt"></RemoveStoryboard>
</DataTrigger.ExitActions>
</DataTrigger>
</Style.Triggers>
</Style>https://stackoverflow.com/questions/6593747
复制相似问题