我试图从 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(使用前将#替换为@)