4

与えられた: コントロール (x:Name="border1") とVisualStateManager. コントロールは、を含む にRenderTransform設定されます。TransformGroupTranslateTransform

VisualState「NotShown」では、sTranslateTransformプロパティYは、Value(少なくとも) 変換されるコントロールの高さにアニメーション化する必要があります (効果的に非表示にします - ClipToBoundstrue に設定します)。

Blend が生成するコードは次のとおりです。

<VisualState x:Name="NotShown">
    <Storyboard>
        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)" Storyboard.TargetName="border1">
            <EasingDoubleKeyFrame KeyTime="0" Value="{Binding ActualHeight, ElementName=border1}"/>
        </DoubleAnimationUsingKeyFrames>
    </Storyboard>
</VisualState>

編集 (2):{Binding ActualHeight, ElementName=border1}まったく機能しません。Blend ではなく VS から実行する場合、ヒントがあります。

ターゲット要素の管理 FrameworkElement または FrameworkContentElement が見つかりません。BindingExpression:Path=ActualHeight; DataItem=null; ターゲット要素は 'EasingDoubleKeyFrame' (HashCode=57957548) です。ターゲット プロパティは 'Value' (タイプ 'Double')

このアニメーションの目的に合わせて適切に設定するにはどうすればよいですか?

4

1 に答える 1

0
  1. あなたは ControlTemplate にいるので、のTemplateBinding代わりに使用する必要がありBindingます。
  2. Binding/ (ではなく である)TemplateBindingでのみ「動作」します。したがって、コード ビハインドでアニメーションを実行する必要があります。FrameworkElementEasingDoubleKeyFrameDependencyObjectFrameworkElement
于 2012-09-13T07:30:05.813 に答える