我有一个小的椭圆,我想每次将依赖项属性设置为true时刷新。由于该属性可以在几毫秒内很快从真实回到错误,所以我需要使用动画而不是简单的样式数据触发器来完成此操作。基本上,我只是想要真正的值在椭圆上ping动画。WPF动画只触发一次
<Ellipse Height="10" Width="10" Stroke="#FFFFFFFF" Margin="5,3,0,0">
<Ellipse.Fill>
<SolidColorBrush />
</Ellipse.Fill>
<Ellipse.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding IsReceiving}" Value="True" >
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<ColorAnimationUsingKeyFrames Storyboard.TargetProperty="Fill.Color">
<ColorAnimationUsingKeyFrames.KeyFrames>
<DiscreteColorKeyFrame KeyTime="0:0:0" Value="Red"/>
<DiscreteColorKeyFrame KeyTime="0:0:0.25" Value="Transparent"/>
</ColorAnimationUsingKeyFrames.KeyFrames>
</ColorAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
</Style.Triggers>
</Style>
</Ellipse.Style>
</Ellipse>
这个动画似乎有用,但它只在第一次触发值时才会触发。我错过了什么吗?
更新: 感谢您输入的每个人。事实证明,这是一个线程问题。最初,我在控件上有一个DP,它绑定到实现INotifyPropertyChanged的视图模型。然后我尝试删除控制器上的DP,并将我的视图模型属性转换为DP。繁荣,那时我开始出现一个错误,指出一个不同的线程拥有这个对象。我意识到我需要使用Reactive Extensions来合并一些Observable,正如我在应用程序的其他部分所做的一样。我用PropertyChanged()恢复到视图模型的传统属性,并简单地将其绑定到控件的动画。现在一切都完美无缺。
为什么你要绑定双向呢? – franssu 2012-08-14 11:59:00