gpt4 book ai didi

c# - 在 WPF 中启动 XAML 动画

转载 作者:太空宇宙 更新时间:2023-11-03 10:55:55 25 4
gpt4 key购买 nike

我正在使用 this作为制作动画开始使用代码隐藏的基础。根据文章的内容,我有以下几点:

<Window.Resources>
<Storyboard x:Key="sbdLabelRotation">
<DoubleAnimation
Storyboard.TargetName="lblHello"
Storyboard.TargetProperty="(TextBlock.RenderTransform).(RotateTransform.Angle)"
From="0"
To="360"
Duration="0:0:0.5"
RepeatBehavior="4x" />
</Storyboard>

</Window.Resources>

我有以下 XAML(显然):

    <Label x:Name="lblHello" Content="test" Margin="20"/>

以及背后的代码:

public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}

public void AnimateLabelRotation()
{
Storyboard sbdLabelRotation = (Storyboard)FindResource("sbdLabelRotation");

sbdLabelRotation.Begin(this);
}

我从按钮点击事件中调用。 FindResource 工作并找到 Storyboard,但没有任何反应。我已经设法让动画在事件触发器上工作,但显然我缺少一些背后的代码。

最佳答案

这个:

<Label x:Name="lblHello" Content="test" Margin="20"/>

还有这个:

Storyboard.TargetProperty="(TextBlock.RenderTransform).(RotateTransform.Angle)"

不兼容。

当动画试图找到要设置动画的属性时,它会转到 (TextBlock.RenderTransform) 并找到 null,因为您没有声明它(实际上它没有,因为您说的是 TextBlock 但是将它应用于 Label,更多内容在后面的答案中)。因此它找不到 .(RotateTransform.Angle).

解决问题:

<Label x:Name="lblHello"
Content="test"
Margin="20"
RenderTransformOrigin="0.5,0.5">
<Label.RenderTransform>
<RotateTransform />
</Label.RenderTransform>
</Label>

注意 RenderTransformOrigin 设置 - 这意味着旋转轴将位于对象的中心(X 和 Y)。

另外,在动画中应该是:

Storyboard.TargetProperty="(Label.RenderTransform).(RotateTransform.Angle)"

关于c# - 在 WPF 中启动 XAML 动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19523905/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com