0

wpf でキャンバスに四角形を配置しました。この四角形に「FrameworkElement.With」を使って doubleAnimation を与えました。アニメーション終了後に長方形の幅を変更しようとしても、変更されません。理由はわかりますか?

4

1 に答える 1

0

アニメーションが変更され、優先度の高い値が保持されるため、通常の設定値は機能しません。Dependency Property Value Precedenceの詳細については、Microsoft ドキュメントを参照してください。

アニメーション プロパティの値を変更するには、2 つの異なる方法があります。

1位。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れ、最後に設定した値にアニメーション化されます。

2番目。Widthプロパティからアニメーションを削除します

ストーリーボードまたはアニメーションが完了するたびに、別のnullアニメーションを開始して、優先度の高いWidthプロパティの値を削除します。

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