我目前正在尝试使用WPF在我的表单上制作按钮 - 这是大学课程的一部分,所以这一切都是为了展示知识而不是看起来很好。
我们已经展示了如何为每个按钮设置动画,但由于我希望每个按钮上的动画都是相同的,所以我正在使用一种风格 - 我们没有教过这些东西,哪些查找文档就像找到国际海事组织Big Foot的证据。
到目前为止,我的代码是:
<Style TargetType="{x:Type Button}" x:Key="ButtonAnimation">
<Style.Triggers>
<EventTrigger RoutedEvent="Button.Click">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Angle"
To="360" Duration="0:0:1"
FillBehavior="Stop" />
</Storyboard>
</BeginStoryboard>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="ScaleY"
To="0.1" Duration="0:0:0.5"
FillBehavior="Stop" AutoReverse="True" />
</Storyboard>
</BeginStoryboard>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="ScaleX"
To="0.1" Duration="0:0:0.5"
FillBehavior="Stop" AutoReverse="True" />
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Style.Triggers>
</Style>
</Window.Resources>
TargetProperty =“”值是不正确的,在我的生活中,我无法在网上找到任何应该存在的内容。如果动画应用于每个按钮而不是样式,那么当前的值就是您所拥有的。
我如何让它工作?什么是正确的TargetProperty?
答案 0 :(得分:3)
我想这......
Storyboard.TargetProperty="Angle"
......应该......
Storyboard.TargetProperty="(Button.RenderTransform).(RotateTransform.Angle)"
其他的:
Storyboard.TargetProperty="(Button.RenderTransform).(ScaleTransform.ScaleY)"
Storyboard.TargetProperty="(Button.RenderTransform).(ScaleTransform.ScaleX)"
您可能需要将RenderTransform
替换为LayoutTransform
,具体取决于您在标记中使用的内容。
但是,只有在您只有两个转换中的一个转换时才会有效,即RotateTransform
或 ScaleTransform
。如果你将它们放在TransformGroup
中,事情会变得更加复杂。如果您已将RotateTransform
定义为第一个孩子,并将ScaleTransform
定义为TransformGroup
的第二个孩子,那么这应该有效(未经过测试):
(Button.RenderTransform).(TransformGroup.Children)[0].(RotateTransform.Angle)
(Button.RenderTransform).(TransformGroup.Children)[1].(ScaleTransform.X)
(Button.RenderTransform).(TransformGroup.Children)[1].(ScaleTransform.Y)
但是,在更改变换的顺序或删除其中一个时必须小心,因为这会破坏您的动画......
祝你好运!