0

只是一个简单的问题,我一直在谷歌上搜索年龄。我有一个故事板:

<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 编写的?

谢谢!

4

1 回答 1

2

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

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

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}"/>
于 2012-11-29T07:17:18.330 回答