将TranslateTransform.Y设置为控件的高度(目的是将元素滑出视线)

时间:2012-04-10 15:26:38

标签: wpf xaml blend vsm

给定:控制(x:名称=" border1"),VisualStateManager。控件的RenderTransform设置为TransformGroup,其中包含TranslateTransform

VisualState&#34; NotShown&#34;中,TranslateTransform s Y属性应设置为Value的动画,该ClipToBounds是(至少)高度的<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> 控制被翻译(有效地使其不可见 - {Binding ActualHeight, ElementName=border1}设置为真)。

这是Blend生成的代码:

{{1}}

编辑(2):{{1}}根本不起作用。当从VS而不是Blend运行时,有一个提示:

  

无法找到管理FrameworkElement或FrameworkContentElement   目标要素。 BindingExpression:路径=的ActualHeight;的DataItem = NULL;   目标元素是&#39; EasingDoubleKeyFrame&#39; (的HashCode = 57957548);目标   财产是&#39;价值&#39; (键入&#39; Double&#39;)

如何为此动画的目的正确设置内容?

1 个答案:

答案 0 :(得分:0)

  1. 您在ControlTemplate中,因此必须使用TemplateBinding而不是Binding
  2. Binding / TemplateBinding仅在FrameworkElement上“有效”(EasingDoubleKeyFrameDependencyObject,而不是FrameworkElement。所以你必须在代码隐藏中做动画。