2014-01-30 51 views
4

這是我第一次在這裏問一個問題,這是一個問題,我是一個總新手,所以請忍受我在這裏...如何使用DataTrigger啓動故事板?

我正在開發一個WPF GUI應用程序與MVVM架構,和我的團隊和我正在採取的方法是讓多個視圖在用戶界面通過它的運動時必須「飛快地」屏幕上飛。我們面臨的問題是如何在UI從一個視圖轉換到另一個視圖時運行動畫。我的主視圖上有一個按鈕,當按下按鈕時會更改一個屬性,讓一個視圖知道它需要離開,我一直試圖將其綁定到動畫的開頭。我設置了定時器,這會延緩我的故事板動畫持續時間的視圖更改,但我無法讓我的動畫運行!在XAML我有我一套我的故事板(在Blend生成)了DataTrigger內是這樣的:

<UserControl.Style> 
    <Style> 
     <Style.Triggers> 
     <DataTrigger Binding="{Binding StandbyViewModel.LeavingStandbyView}" Value="true"> 
      <BeginStoryboard> 
       <Storyboard> 
        <DoubleAnimationUsingKeyFrames ...> // I've got 22 of these statements in my storyboard 

我得到的DoubleAnimationUsingKeyFrames線與Storyboard.TargetName =「標籤」屬性,混合生成的地址問題我正在製作動畫的用戶界面的每個部分。我得到的錯誤是:

TargetName property cannot be set on a Style Setter 

好像不准我在這裏使用的targetName屬性,但我怎麼回事指定動畫映射到哪個UI組件?在我創建的0.5秒動畫期間,我有7個UI元素正在移動並更改不透明度,所以我想象我必須有一些方法來識別它們中的每一個。

我的方法在這裏沒有好處,或者我只是做錯了什麼?我一直在閱讀很多不同的文章,我不確定要做什麼。看起來好像有什麼類型的觸發器和用戶控件可以做什麼嚴格的規則,但我不知道它們中的任何一個。

任何幫助或建議將不勝感激。

回答

1

我不是,如果你實際上可以肯定的,但如果可以,那麼你就需要使用DataTrigger.EnterActions Property,施加當觸發對象變得活躍

<UserControl.Style> 
    <Style> 
     <Style.Triggers> 
     <DataTrigger Binding="{Binding StandbyViewModel.LeavingStandbyView}" Value="true"> 
      <DataTrigger.EnterActions> 
       <BeginStoryboard> 
        <Storyboard> 
         <DoubleAnimationUsingKeyFrames ...> 
+0

謝謝,我會試試看。你知道更好的方法來做到這一點嗎?我接受建議。 – Ian

+0

使用['Ev​​entTrigger'類](http://msdn.microsoft.com/en-us/library/system.windows.eventtrigger(v = vs.110).aspx)。 – Sheridan

+0

我會再看一遍。謝謝你的幫助! – Ian