2011-07-06 70 views
3

我完全是WPF动画的新手,目前我面临着很大的问题。WPF TextBlock ColorAnimation

我有一个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,只是改变了背景色进行了测试。我的问题是动画不停止并返回原始颜色。我相信我错过了一些东西。

+0

我测试了你的数据触发器,它对我很有用。最有可能你绑定部分有问题。如果有关于绑定错误的信息,您可以在调试代码时检查输出窗口。像:System.Windows.Data错误:40:BindingExpression路径错误:在'对象'''Test'(HashCode = 35326503)'找不到'IsIdle'属性。 BindingExpression:路径= IsIdle; DataItem ='Test'(HashCode = 35326503);目标元素是'TextBlock'(Name ='Foo');目标属性是'NoTarget'(输入'Object') –

+0

@YiğitYener感谢您的回放。绑定工作正常。我的输出窗口没有错误。对我来说,即使值发生变化,动画也会继续。 – Dummy01

+0

好的。我得到了它的工作。您必须在其中添加部分和标记。 sbBegin是您的BeginStoryboard的名字。 –

回答

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> 
+0

我只是自己找到它,但非常感谢您的努力! – Dummy01

+0

你好。 ^^ –