我在xaml文件中创建了动画故事板。该故事板从Button.Click开始。但是为了停止动画,我试图停止代码背后的自定义事件的故事板。 代码没有抛出任何异常,但是当我的事件被触发时,动画仍然继续。停止WPF动画,故事板从xaml开始,但在代码隐藏中停止?
我认为问题在于Stop方法。停止需要开始动画的相同对象来停止它。但是这里的故事板是从WPF xaml开始的,我在后面的代码中停止了它。
任何解决方案,如何让代码后面的Xaml对象或任何替代解决方案?
XAML代码:
<Canvas.Triggers>
<EventTrigger RoutedEvent="Button.Click" SourceName="ScanButton">
<EventTrigger.Actions>
<BeginStoryboard >
<Storyboard Name="MovingServer" Storyboard.TargetName="ImageMove" RepeatBehavior="Forever" >
<DoubleAnimation Storyboard.TargetProperty="(Canvas.Left)" Duration="0:0:2" From="30" To="300" BeginTime="0:0:0" />
<DoubleAnimation Storyboard.TargetProperty="(Canvas.Left)" Duration="0:0:5" From="300" To="300" BeginTime="0:0:5" />
<DoubleAnimation Storyboard.TargetProperty="(Canvas.Left)" Duration="0:0:2" From="300" To="600" BeginTime="0:0:7" />
<DoubleAnimation Storyboard.TargetProperty="Opacity" Duration="0:0:2" From="1" To="0" BeginTime="0:0:7" />
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
代码背后:
private void EventPublisher_OnScanningFinish(object sender, EventArgs args)
{
Dispatcher.Invoke(DispatcherPriority.Normal, (Action)delegate() { this.StopScanningAnimation(); });
}
private void StopScanningAnimation()
{
ServerView.StoryBoardServerScrolling.Stop(this); //---------- Not Working
//this.ServerView.Server1Static.Visibility = System.Windows.Visibility.Hidden;
//this.ServerView.Server2Static.Visibility = System.Windows.Visibility.Hidden;
//this.ServerView.Server3Scrolling.Visibility = System.Windows.Visibility.Hidden;
//this.ServerView.SearchingGlass.Visibility = System.Windows.Visibility.Hidden;
}
你测试了吗? 'StaticResources'?你的意思是“资源”吗?那么'x:Key'呢? – 2011-04-11 15:38:26
我测试了一个可以工作的示例代码,但我目前的真实代码太冗长了,所以我正在寻找替代品 – PawanS 2011-04-11 15:41:13
@ H.B。对不起,现在无法测试此代码。你对StaticResources是正确的,它应该是'资源',我现在就改变它。 x:Key; 'x:'部分是可选的 – 2011-04-11 15:44:47