是否可以在wpf中设置一组控件的动画
本文关键字:一组 控件 动画 wpf 设置 是否 | 更新日期: 2023-09-27 18:22:07
我在wpf应用程序中有3个按钮。加载后,按钮应从应用程序的左侧平移到中心。我不想把动画应用到每个按钮上,有没有办法把这些按钮分组;然后将动画属性添加到将为按钮组设置动画的组中?
您可以将按钮分组到一个容器(如网格)中,然后为容器设置动画。
另一种选择是将动画放在一个样式中,并将该样式应用于按钮,可以通过显式设置每个按钮的样式,也可以通过隐式设置按钮父级中按钮的默认样式(因此也是容器)
下面是一个使用样式的示例。
不幸的是,加载的窗口事件会被重复调用,因此动画会继续进行。我看到的唯一解决方案是在第一次之后设置布尔值,防止动画再次出现。
<Window x:Class="WpfApplication3.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow"
Height="350"
Width="525">
<Grid>
<Grid HorizontalAlignment="Center"
VerticalAlignment="Center">
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<Grid.Resources>
<Style TargetType="Button">
<Setter Property="Width"
Value="150" />
<Setter Property="Padding"
Value="15" />
<Setter Property="Margin"
Value="15" />
<Setter Property="RenderTransform">
<Setter.Value>
<TranslateTransform X="0" />
</Setter.Value>
</Setter>
<Style.Triggers>
<EventTrigger RoutedEvent="Window.Loaded">
<BeginStoryboard>
<Storyboard FillBehavior="HoldEnd">
<DoubleAnimation Storyboard.TargetProperty="(Button.RenderTransform).(TranslateTransform.X)"
From="-150"
To="0"
RepeatBehavior="1"
Duration="0:0:2" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Style.Triggers>
</Style>
</Grid.Resources>
<Button Grid.Row="0">Start</Button>
<Button Grid.Row="1">Setup</Button>
<Button Grid.Row="2">Quit</Button>
</Grid>
</Grid>
</Window>