Wpf 将TranslateTransform.Y设置为控件动画';s高度(用于将元件滑离视线)
给定:使用Wpf 将TranslateTransform.Y设置为控件动画';s高度(用于将元件滑离视线),wpf,xaml,blend,vsm,Wpf,Xaml,Blend,Vsm,给定:使用VisualStateManager控件(x:Name=“border1”)。控件的RenderTransform设置为包含TranslateTransform的TransformGroup 在VisualState“NotShowed”中,TranslateTransformsY属性应设置为值,即(至少)正在翻译的控件的高度(有效地使其不可见-ClipToBounds设置为真) 这是混合生成的代码: <VisualState x:Name="NotShown">
VisualStateManager
控件(x:Name=“border1”)。控件的RenderTransform
设置为包含TranslateTransform
的TransformGroup
在VisualState
“NotShowed”中,TranslateTransform
sY
属性应设置为值,即(至少)正在翻译的控件的高度(有效地使其不可见-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>
编辑(2):{Binding ActualHeight,ElementName=border1}
根本不起作用。当从VS而不是混合运行时,有一个提示:
找不到的治理FrameworkElement或FrameworkContentElement
目标元素。BindingExpression:Path=ActualHeight;DataItem=null;
目标元素为“EasingDoubleKeyFrame”(HashCode=57957548);目标
属性为“Value”(类型为“Double”)
如何正确设置此动画的内容
您在ControlTemplate中,因此必须使用TemplateBinding
而不是Binding
绑定
/模板绑定
仅在框架元素
上“起作用”(测量双关键帧
是一个依赖对象
,而不是框架元素
)。所以你必须在代码隐藏中制作动画
改变了部分,猜测可能会出什么问题。。。包括我以前不知道的VS输出。更新:使EasingDoubleKeyFrame成为border1的资源。现在至少绑定可以工作了。还有更多。。。。。。并按预期工作。我可以责怪Blend生成了那个代码吗?虽然工作不好。。。和混合在状态之间切换时崩溃。:/对这个话题有什么评论吗?