4

给定:控制 (x:Name="border1") 带有VisualStateManager. 控件的RenderTransform设置为TransformGroup包含 a 的 a TranslateTransform

VisualState“NotShown”中,应将TranslateTransformsY属性设置Value为(至少)正在翻译的控件的高度(有效地使其不可见 -ClipToBounds设置为 true)。

这是 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}根本不起作用。从 VS 而不是 Blend 运行时,有一个提示:

找不到目标元素的管理 FrameworkElement 或 FrameworkContentElement。绑定表达式:路径=实际高度;数据项=空;目标元素是“EasingDoubleKeyFrame”(HashCode=57957548);目标属性是“值”(类型“双”)

为了这个动画的目的,我该如何正确设置?

4

1 回答 1

0
  1. 您在 ControlTemplate 中,因此您必须使用TemplateBinding而不是Binding.
  2. Binding/仅在(是 a ,而不是 a )TemplateBinding上“起作用” 。所以你必须在代码隐藏中做你的动画。FrameworkElementEasingDoubleKeyFrameDependencyObjectFrameworkElement
于 2012-09-13T07:30:05.813 回答