WPF中Storyboard的问题

stuhrbeu 2007-03-25 11:20:13
xaml中有一个循环动作的Storyboard,请问如何在c#代码中停止它,实现随时控制Storyboard的开始执行和停止.
...全文
1654 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
stuhrbeu 2007-03-25
  • 打赏
  • 举报
回复
谢谢了
namhyuk 2007-03-25
  • 打赏
  • 举报
回复
RepeatBehavior="Forever" 后也是能够Pause的。

再强调一下,开始动画时
board.Begin(ellipse, true); //注意第二个参数为true

stuhrbeu 2007-03-25
  • 打赏
  • 举报
回复
我的Storyboard含有RepeatBehavior="Forever",因为需要它循环动作,有了这个属性.Pause就不行了
namhyuk 2007-03-25
  • 打赏
  • 举报
回复
开始控钮Click事件的board.Pause(ellipse)去掉~
namhyuk 2007-03-25
  • 打赏
  • 举报
回复
或者动画的启动和暂停都要用代码控制的话。
那么
<Window.Resources>
<Storyboard x:Key="myStoryboardKey">
....
</Storyboard>
</Window.Resources>



开始控钮Click事件
System.Windows.Media.Animation.Storyboard board = (System.Windows.Media.Animation.Storyboard)this.Resources["myStoryboardKey"];
board.Pause(ellipse);

board.Begin(ellipse, true); //注意第二个参数为true

暂停按钮Click事件
System.Windows.Media.Animation.Storyboard board = (System.Windows.Media.Animation.Storyboard)this.Resources["myStoryboardKey"];
board.Pause(ellipse);

ellipse为StoryBoard.TargetName
namhyuk 2007-03-25
  • 打赏
  • 举报
回复
应用Expression Blend可以轻松搞定,不用写代码。

比如一个Ellipse点击它会从一个位置移到另一个位置,点击按钮(btnStop)则停止。
在Expression Blend做完后的对应的XAML代码:

<Window.Triggers>
<EventTrigger RoutedEvent="Mouse.MouseDown" SourceName="ellipse">
<BeginStoryboard x:Name="OnLoaded1_BeginStoryboard" Storyboard="{StaticResource OnLoaded1}"/>
</EventTrigger>

<EventTrigger RoutedEvent="ButtonBase.Click" SourceName="btnStop">
<StopStoryboard BeginStoryboardName="OnLoaded1_BeginStoryboard"/>
</EventTrigger>
</Window.Triggers>

总之,Animation的开始、暂停、停止,通过Expression Blend可以一行代码不用写就搞定。

推荐:Lynda.com.Expression.Blend.Beta.Preview.CD,在emule上可搜到。

17,740

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧