2011-07-06 31 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

你好。 ^^ –