wpf FrameworkElement.width 动画
wpf FrameworkElement.width Animation
我将矩形放在 wpf 的 Canvas 上。
我们使用 "FrameworkElement.With" 为这个矩形赋予了 doubleAnimation。
如果您在完成动画后尝试更改矩形宽度,它不会改变。
你能猜出为什么吗?
动画会改变并保持较高优先级的值,因此您的正常设置值将不起作用。您可以阅读 Microsoft 文档以了解有关 Dependency 属性 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);
我将矩形放在 wpf 的 Canvas 上。 我们使用 "FrameworkElement.With" 为这个矩形赋予了 doubleAnimation。 如果您在完成动画后尝试更改矩形宽度,它不会改变。 你能猜出为什么吗?
动画会改变并保持较高优先级的值,因此您的正常设置值将不起作用。您可以阅读 Microsoft 文档以了解有关 Dependency 属性 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);