可见性更改时打开/关闭动画

时间:2015-10-23 11:23:33

标签: wpf expression-blend

我有一个带边框控件的wpf应用程序,其可见性绑定到viewmodel上的属性。

控制按照我的预期显示和隐藏,但我想添加一些动画来使节目和隐藏视觉效果更加顺畅。 我正在思考控件宽度在0到250之间的动画 - 所以它给出了扩展/收缩的外观。

我对混合的经验很少,所以不确定这是否是正确的解决方法但是 - 我创建了一个故事板,在X上进行缩放转换,然后尝试添加触发器来对抗可见性用于启动故事板的控件。但是,我无法找到可添加到触发器的可见性事件。谁能指出我正确的方向?

1 个答案:

答案 0 :(得分:1)

你可以像这样使用样式。但在这种情况下,您应该绑定到 IsEnabled 属性而不是可见性,因为如果可见性发生更改,则不支持opacitiy动画。

<Style x:Key="myBorder" TargetType="Border">
    <Style.Triggers>
        <Trigger Property="IsEnabled" Value="False">
            <Trigger.EnterActions>
                <BeginStoryboard>
                    <Storyboard TargetProperty="Opacity">
                        <DoubleAnimation From="1" To="0" Duration="0:0:0.5" />
                    </Storyboard>
                </BeginStoryboard>
            </Trigger.EnterActions>
            <Trigger.ExitActions>
                <BeginStoryboard>
                    <Storyboard TargetProperty="Opacity">
                        <DoubleAnimation From="0" To="1" Duration="0:0:0.5" />
                    </Storyboard>
                </BeginStoryboard>
            </Trigger.ExitActions>
        </Trigger>
    </Style.Triggers>
</Style>

我希望,这很有帮助。

<强>更新

要收缩边框,您可以将ThicknessAnimation用于以前的代码示例。

<Storyboard TargetProperty="BorderThickness">
    <ThicknessAnimation From="1,1,1,1" To="0,0,0,0" Duration="0:0:0.5" />
</Storyboard>