0

我把我的矩形放在 wpf 的画布上。我们使用“FrameworkElement.With”为这个矩形提供了 doubleAnimation。如果您在完成动画后尝试更改矩形宽度,它不会更改。你能猜到为什么吗?

4

1 回答 1

0

动画会改变并保持较高优先级的值,因此您的正常设置值将不起作用。您可以阅读 Microsoft 文档以获取有关Dependency Property Value Precedence的更多详细信息。

您有两种不同的方法来更改动画属性值。

第一个。不要分配动画To属性

如果您在下面以这种方式创建动画,则需要删除该To属性。

<DoubleAnimation Storyboard.TargetName="element" Storyboard.TargetProperty="Width"
                 From="0" To="100" Duration="0:0:1" />

删除To.

<DoubleAnimation Storyboard.TargetName="element" Storyboard.TargetProperty="Width"
                 From="0" Duration="0:0:1" />

当您尝试开始动画时,请像这样调用:

storyboard.Begin();
element.Width = 100;

这样,您的故事板将开始,然后将您的动画Width设置为您最后设定的值。

第二。从您的Width属性中删除动画

每次故事板或动画完成时,开始另一个null动画以删除更高优先级的Width属性值。

element.BeginAnimation(WidthProperty, null);
于 2018-09-12T11:57:08.950 回答