从另一个窗口停止故事板
本文关键字:故事 另一个 窗口 | 更新日期: 2023-09-27 18:08:38
我在MainWindow中有一个Storyboard如下:
<Storyboard x:Key="OnMouseLeftButtonDown1">
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" RepeatBehavior="Forever" DecelerationRatio="1" Storyboard.TargetName="ellipse">
<EasingDoubleKeyFrame KeyTime="0:0:1" Value="0"/>
<EasingDoubleKeyFrame KeyTime="0:0:2" Value="1"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
在同一个窗口中,我有一个按钮来调用这个StoryBoard,同时打开一个新窗口,如下所示:
private void Button_Click(object sender, System.Windows.RoutedEventArgs e)
{
Storyboard sb= this.Resources["OnMouseLeftButtonDown2"] as Storyboard;
if (sb != null)
sb.Begin(this);
Window2 win = new Window2();
win.Show();
}
现在,当它显示Window2我想停止storyboard["OnMouseLeftButtonDown2"]与一个按钮控制,你有任何建议如何工作这一步?
Tahnsk,非常感谢你的关注,
欢呼
嗨,我想你是想在新窗口中停止Storyboard吧?我建议这样做:
private void Button_Click(object sender, System.Windows.RoutedEventArgs e)
{
Storyboard sb= this.Resources["OnMouseLeftButtonDown2"] as Storyboard;
if (sb != null)
sb.Begin(this);
Window2 win = new Window2();
win.StopStoryboardAction = () => sb.Stop();
win.Show();
}
给你的新窗口一个公共属性:
public Action StopStoryboardAction { get; set; }
在你的新窗口中调用
if (StopStoryboardAction != null) StopStoryboardAction();
这样你可以得到更少的依赖。
PS:- 我想你也可以写
win.StopStoryboardAction = sb.Stop
- 也许你需要在闭包中获取当前调度程序但我不这么认为
相关文章-
StoryBoard board = (StoryBoard)this.FindResource("OnMouseLeftButtonDown2");
board.stop();