2011-04-13 63 views
4

我有一個由ViewModel中的屬性觸發的故事板,這觸發了動畫的啓動。 但如何做我將「保存」屬性回當它與動畫(觸發ExitAction。)在故事板內設置ViewModel布爾屬性

<Style TargetType="TextBlock" x:Key="FadeInOut"> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding Saved}" Value="True"> 
       <DataTrigger.EnterActions> 
        <BeginStoryboard> 
         <Storyboard> 
          <DoubleAnimation Storyboard.TargetProperty="Opacity" Duration="0:0:1" From="0" To="1" /> 
          <!-- set "Saved" to false when done --> 
         </Storyboard> 
        </BeginStoryboard> 
       </DataTrigger.EnterActions> 
       <DataTrigger.ExitActions> 
        <BeginStoryboard> 
         <Storyboard> 
          <DoubleAnimation Storyboard.TargetProperty="Opacity" Duration="0:0:1" From="1" To="0" /> 
         </Storyboard> 
        </BeginStoryboard> 
       </DataTrigger.ExitActions> 
      </DataTrigger> 
     </Style.Triggers> 
    </Style> 

回答

5

可以使用ObjectAnimationUsingKeyFrames設置屬性來完成。我不太確定你是否可以使用其他動畫,但這是我最近使用的動畫。

<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Saved"> 
     <DiscreteObjectKeyFrame KeyTime="0"> 
      <DiscreteObjectKeyFrame.Value> 
       <system:Boolean>False</system:Boolean> 
      </DiscreteObjectKeyFrame.Value> 
     </DiscreteObjectKeyFrame> 
    </ObjectAnimationUsingKeyFrames> 
+0

對不起,我必須在EnterAction中設置? – advapi 2016-03-17 14:47:19

+0

@advapi:對不起,但我不明白你的問題。這可能是因爲我已經有好幾年沒有進入.NET世界了。據我記得,這個代碼必須進入故事板。希望有所幫助。 – PVitt 2016-03-18 14:52:17

7

如果你可以導航到你的財產,我會推薦一個BooleanAnimationUsingKeyFrames與離散幀在你的最終時間。

<BooleanAnimationUsingKeyFrames 
      Storyboard.TargetProperty="DataContext.Saved" 
      FillBehavior="HoldEnd"> 
      <DiscreteBooleanKeyFrame Value="False" KeyTime="0:0:1" /> 
</BooleanAnimationUsingKeyFrames> 

既然你用我結合Saved假設使用的DataContext應該工作。