2013-04-10 81 views
2

我有一個控件,我想向下移動MouseOver。不幸的是,當我將鼠標懸停時,動畫不會運行,但背景會改變顏色。WPF:觸發動畫 - 沿Y軸向下移動控件

Toolkit:Dialog是繼承ContentControl的自定義對話框控件。另外,在最後的實現中,我不會使用MouseOver - 目前這只是爲了便於測試。

<Style x:Key="blah" TargetType="Toolkit:Dialog"> 
    <Trigger Property="IsMouseOver" Value="True"> 
     <Setter Property="Toolkit:CanvasControl.Background" Value="White" /> 
     <Trigger.EnterActions> 
      <BeginStoryboard> 
       <Storyboard> 
        <DoubleAnimation Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.Y)" From="0" To="100" Duration="00:00:01.000" /> 
       </Storyboard> 
      </BeginStoryboard> 
     </Trigger.EnterActions> 
    </Trigger> 
</Style> 
+0

沒有足夠的信息。觸發器使用了哪種控件/風格?請記住,當你在鼠標上應用動畫時,元素會移動,這可能會導致鼠標不再有效。當您將鼠標放在控件的最上面時,會導致一些煩人的抖動。 – dowhilefor 2013-04-10 13:44:56

+0

同意,但我實際上計劃使用這種可見性狀態變化,但爲了便於測試,我將它放在鼠標懸停狀態上。它的自定義控件(繼承'ContentControl') – Chris 2013-04-10 13:45:52

+1

我不是100%確定,但我認爲你必須提供一個空的TranslateTransform到RenderTransform,因爲通常沒有任何內容。所以你試圖給不存在的東西製作動畫。只需添加TranslateTransform並查看是否有效。 – dowhilefor 2013-04-10 13:47:25

回答

4

我認爲你必須提供一個空TranslateTransform到的RenderTransform,因爲normaly沒有什麼在RenderTransform。所以你試圖給不存在的東西製作動畫。只需加上TranslateTransform,看看是否有效:

<Style x:Key="blah" TargetType="Toolkit:Dialog"> 
    <Setter Property="RenderTransform"> 
     <Setter.Value> 
      <TranslateTransform/> 
     </Setter.Value> 
    </Setter> 
    <Trigger Property="IsMouseOver" Value="True"> 
     <Setter Property="Toolkit:CanvasControl.Background" Value="White" /> 
     <Trigger.EnterActions> 
      <BeginStoryboard> 
       <Storyboard> 
        <DoubleAnimation Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.Y)" From="0" To="100" Duration="00:00:01.000" /> 
       </Storyboard> 
      </BeginStoryboard> 
     </Trigger.EnterActions> 
    </Trigger> 
</Style>