WPF:触发动画 - 沿Y轴向下移动控制

时间:2013-04-10 13:41:48

标签: c# .net wpf xaml animation

我有一个控件,我想在MouseOver向下移动。不幸的是,当我鼠标悬停时,动画不会运行,但背景会改变颜色。

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>

1 个答案:

答案 0 :(得分:4)

我认为你必须向RenderTransform提供一个空的TranslateTransform,因为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>