关于边距和故事板的快速之一

时间:2012-11-29 07:10:49

标签: wpf animation storyboard

只是一个简单的问题,我一直在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中编写它?

谢谢!

1 个答案:

答案 0 :(得分:2)

不,您无法将动画绑定到Margin,因为它没有定义相应的依赖项属性。有几种选择,这里有两种:

  1. 将您的对象放入画布并为Canvas.LeftCanvas.Top
  2. 设置动画
  3. 在您的对象上定义RenderTransform,并为其XY属性设置动画。

  4. 1)

    <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}"/>
    

    2)

    <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}"/>