WPF TextBlock ColorAnimation

Dum*_*y01 3 c# wpf

我对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>
Run Code Online (Sandbox Code Playgroud)

有人能解决这个问题吗

先感谢您!

编辑: 绑定工作正常,我使用一个简单的DataTrigger测试它只是改变背景颜色.我的问题是动画不会停止并返回到原始颜色.我相信我会错过一些东西.

Yiğ*_*ner 5

添加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>
Run Code Online (Sandbox Code Playgroud)