【发布时间】:2013-11-12 17:34:57
【问题描述】:
我想根据 ViewModel 中的新值设置文本框(价格)背景颜色的动画。
颜色可以根据新值不同(大于 0 -> 绿色 - 小于 0 -> 红色)
我能看到的唯一动画是在设置新值时启动。之后动画就不会再出现了。
<TextBox HorizontalAlignment="Left" Height="23" Margin="10,178,0,0" TextWrapping="Wrap" Text="{Binding price}" VerticalAlignment="Top" Width="120" x:Name="ChangeField">
<TextBox.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding price, Converter={StaticResource formatter}}" Value="positive">
<DataTrigger.EnterActions>
<StopStoryboard BeginStoryboardName="pos"></StopStoryboard>
<BeginStoryboard x:Name="pos">
<Storyboard>
<ColorAnimation AutoReverse="True" To="Green" Duration="0:0:0:0.100" Storyboard.TargetProperty="(TextBox.Background).(SolidColorBrush.Color)"></ColorAnimation>
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
<DataTrigger.ExitActions>
<RemoveStoryboard BeginStoryboardName="pos"></RemoveStoryboard>
</DataTrigger.ExitActions>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
价格可能每秒变化几次,所以我需要在设置新价格值时中止正在运行的动画。
【问题讨论】:
-
好的,现在我知道出了什么问题。当我遇到“肯定”情况并且之后来自转换器的所有更新也带有“肯定”时,DataTrigger 永远不会进入“EnterActions”。现在我需要知道如何重置 DataTrigger 的值
标签: c# wpf datatrigger coloranimation wpf-animation