2013-04-10 107 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>