从 C# 代码启动 Storyboard

2024-04-23

我试图从 C# 调用在 xaml 代码中声明的故事板:

<Storyboard x:Key="BotRotation"  Duration="00:00:4" RepeatBehavior="Forever" >
            <DoubleAnimation BeginTime="0:0:0"
            Storyboard.TargetName="imageRotateTransformm"
            Storyboard.TargetProperty="ScaleX"
            From="1" To="-1"
            Duration="0:0:2"   
            />
            <DoubleAnimation
            BeginTime="0:0:2"
            Storyboard.TargetName="imageRotateTransformm"
            Storyboard.TargetProperty="ScaleX"
            From="-1" To="1"
            Duration="0:0:2"  
            />
        </Storyboard>
</Window.Resources>

该故事板应修改图像的 ScaleX 属性。 图片声明:

<Image Name="uiRobotIcon" Height="64" Width="64" Source="/YoutubeTelegramAudio;component/imgs/ic_robot.png" RenderTransformOrigin="0.5,0.5">
            <Image.RenderTransform>
                <TransformGroup>
                    <ScaleTransform ScaleY="1" ScaleX="1" x:Name="imageRotateTransformm" />
                    <SkewTransform AngleY="0" AngleX="0" />
                    <RotateTransform Angle="0" />
                    <TranslateTransform/>
                </TransformGroup>
            </Image.RenderTransform>
        </Image>

然后,当我单击另一个按钮时,我想从 C# 启动此动画。 谢谢。


这很容易。只要找到Resource,将其投射到Storyboard然后调用它的Begin() https://msdn.microsoft.com/en-us/library/system.windows.media.animation.storyboard.begin(v=vs.110).aspx method:

Storyboard sb = (<YourNamespace>.Properties.Resources["BotRotation"] as Storyboard);
sb.Begin();

将上面的代码放入某个事件处理程序中,它应该可以正常工作。

But:

在应用程序中声明 Storyboard 的位置也很重要。如果它在App.xaml,那么不用担心,但在其他地方,它可能无法访问。但我认为Window.Resources标签还可以包含可访问的资源。我现在无法测试:)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 C# 代码启动 Storyboard 的相关文章

随机推荐