c# – 如何停止动画WPF?
发布时间:2020-12-16 01:51:04 所属栏目:百科 来源:网络整理
导读:如何停止动画,以便它不会产生已完成的事件.这是一个简单的例子 Window x:Class="WpfApplication5.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWind
如何停止动画,以便它不会产生已完成的事件.这是一个简单的例子
<Window x:Class="WpfApplication5.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="248" Width="318"> <Grid> <Border Width="20" Height="20" Background="Red" MouseEnter="Border_MouseEnter" MouseLeave="Border_MouseLeave" x:Name="border" /> </Grid> </Window> 支持代码: private void Border_MouseEnter(object sender,MouseEventArgs e) { var a = new DoubleAnimation { To = 0,Duration = TimeSpan.FromMilliseconds(4000) }; a.Completed += (obj,args) => MessageBox.Show("Boom!"); border.BeginAnimation(Border.OpacityProperty,a); } private void Border_MouseLeave(object sender,MouseEventArgs e) { border.BeginAnimation(Border.OpacityProperty,null); border.Opacity = 1; } 如果我在矩形变为白色之前移出鼠标,它会在一段时间后显示弹出窗口.怎么预防这个?让我们假设Border_MouseLeave和Border_MouseEnter方法彼此不了解(它们不能相互传递动画实例变量). 解决方法
你可以用这个:
<Border Width="20" Height="20" Background="Red" x:Name="border" > <Border.Triggers> <EventTrigger RoutedEvent="MouseEnter"> <BeginStoryboard Name="Ali"> <Storyboard> <DoubleAnimation To="0" Duration="0:0:4" Completed="com" Storyboard.TargetProperty="Opacity"/> </Storyboard> </BeginStoryboard> </EventTrigger> <EventTrigger RoutedEvent="MouseLeave"> <StopStoryboard BeginStoryboardName="Ali"/> </EventTrigger> </Border.Triggers> </Border> 并且: private void com(object sender,EventArgs e) { MessageBox.Show("boom!"); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |