2

TranslateTransformアニメーションを作成しようとしています。アニメーションでは、オブジェクトをウィンドウの中央に配置する必要があります。WPF アニメーションが Freezable であることは知っています。コンバーターを使用していますが、起動時に値が初期化されます。実行時にEasingDoubleKeyFrameの値を設定する方法はありますか?

ここに私のXAMLコードがあります:

<Storyboard x:Key="Storyboard1">
    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)" Storyboard.TargetName="grid">
        <EasingDoubleKeyFrame KeyTime="0" Value="{Binding Width, Converter={StaticResource Minus}, ElementName=grid}"/>
        <EasingDoubleKeyFrame KeyTime="0:0:1" Value="{Binding Width, Converter={StaticResource EnteringValueConverter}, ElementName=grid}"/>
    </DoubleAnimationUsingKeyFrames>
</Storyboard>
4

3 に答える 3

0

属性を介してアクセスすることはEasingDoubleKeyFrameできません。x:Name代わりに、別のアプローチを使用してEasingDoubleKeyFrameasを定義し、次のようStaticResourceにリンクする必要がありますResourceKey

<UserControl.Resources>
    <EasingDoubleKeyFrame x:Key="myEasingKey" KeyTime="0:0:2" Value="136" />
    <Storyboard x:Key="Storyboard1">
        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)"
                                       Storyboard.TargetName="rectangle">
             <StaticResource ResourceKey="myEasingKey" />
        </DoubleAnimationUsingKeyFrames>
    </Storyboard>
</UserControl.Resources>

以下のようなコード ビハインドを介してアクセスします。

(EasingDoubleKeyFrame)Resources["myEasingKey"].Value = X;

お役に立てれば...

于 2014-02-11T10:20:53.593 に答える
0

「これは、アニメーションがフリーズ可能なオブジェクトであるためです。MSDN ドキュメントに詳細が記載されていますが、基本的には、フリーズされたオブジェクト (つまり、アニメーション) のプロパティは変更できないため、バインドを使用できないことを意味します。

この制限を回避するには、コード ビハインドで一部またはすべての作業を行う必要があります。」

スタックオーバーフローからの引用

于 2012-11-01T15:12:48.773 に答える