WPF停止可见性的情节提要板已更改 [英] WPF Stop Storyboard on Visibility Changed

查看:138
本文介绍了WPF停止可见性的情节提要板已更改的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个带故事板的UserControl,我想在控件的可见性更改时停止动画。

I have a UserControl with a story board and I want to stop the animation when the control's Visibility changes.

我创建了一个触发器来暂停动画并开始播放

I created a Trigger to pause the animation and start it depending on the state, but I keep getting an ArgumentException.

这里是XAML:

<UserControl.Triggers>
    <EventTrigger RoutedEvent="FrameworkElement.Loaded">
        <BeginStoryboard x:Name="ProgressAnimation_BeginStoryboard" Storyboard="{StaticResource ProgressAnimation}"/>
    </EventTrigger>
    <Trigger Property="Control.Visibility" Value="Collapsed">
        <PauseStoryboard BeginStoryboardName="ProgressAnimation_BeginStoryboard" />
    </Trigger>
    <Trigger Property="Control.Visibility" Value="Visible">
        <ResumeStoryboard BeginStoryboardName="ProgressAnimation_BeginStoryboard" />
    </Trigger>
</UserControl.Triggers>

这是例外:


值 System.Windows.Media.Animation.PauseStoryboard的类型不是 System.Windows.SetterBase,因此不能在此通用集合中使用。
参数名称:值

The value "System.Windows.Media.Animation.PauseStoryboard" is not of type "System.Windows.SetterBase" and cannot be used in this generic collection. Parameter name: value

如何在XAML中执行此操作?

How would I do this in XAML ?

谢谢,
Raul

Thanks, Raul

推荐答案

您可以使用控制模板来实现:

You may do it using a control template:

<ControlTemplate>
    ... Control stuff here

    <ControlTemplate.Triggers>
        <Trigger Property="Visibility" Value="Visible">
            <Trigger.EnterActions>
                <BeginStoryboard Storyboard="{StaticResource AnimationStoryboard}" x:Name="AnimationBeginStoryboard"/>
            </Trigger.EnterActions>
            <Trigger.ExitActions>
                <RemoveStoryboard BeginStoryboardName="AnimationBeginStoryboard"/>
            </Trigger.ExitActions>
        </Trigger>
    </ControlTemplate.Triggers>

</ControlTemplate>

这篇关于WPF停止可见性的情节提要板已更改的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆