只是一个简单的问题,我一直在Google上寻找年龄。我有一个故事板:
<Storyboard x:Key="ViewLeftToRight" AccelerationRatio=".5" DecelerationRatio=".5">
<DoubleAnimation Storyboard.TargetName="ReferenceInfo" Storyboard.TargetProperty="Margin" Duration="0:0:0.15" To="{Binding, Width},0,0,0"/>
</Storyboard>
它不起作用。我想知道是否有办法将控件的宽度绑定到“左”边距。如果我需要使用转换器,您是否可以在上面的示例中展示如何在XAML中编写它?
谢谢!
答案 0 :(得分:2)
不,您无法将动画绑定到Margin
,因为它没有定义相应的依赖项属性。有几种选择,这里有两种:
Canvas.Left
和Canvas.Top
RenderTransform
,并为其X
和Y
属性设置动画。<Canvas>
<TextBlock Text="test" x:Name="ReferenceInfo" Canvas.Left="0" Canvas.Top="0" />
</Canvas>
此处,您的故事板短片定位相同的元素ReferenceInfo
,但定位附加属性,您使用“(Canvas.Left)”等括号表示:
<DoubleAnimation
Storyboard.TargetName="ReferenceInfo"
Storyboard.TargetProperty="(Canvas.Left)" Duration="0:0:0.15"
To="{Binding Width}"/>
<TextBlock Text="test" x:Name="ReferenceInfo">
<TextBlock.RenderTransform>
<TranslateTransform x:Name="TranslateReferenceInfo" X="0" Y="0" />
</TextBlock.RenderTransform>
</TextBlock>
然后,动画将按名称引用TranslateTransform
本身:
<DoubleAnimation
Storyboard.TargetName="TranslateReferenceInfo"
Storyboard.TargetProperty="X" Duration="0:0:0.15"
To="{Binding Width}"/>