绑定ElementName

时间:2010-04-26 15:54:31

标签: wpf elementname

首先抱歉我的英语。 我想问为什么ElementName不适用于第一种情况,并且在第二种情况下工作。

我给出了两段代码。这些事情不起作用

<Button                         
         Name="button1" Width="100" >
        <Button.LayoutTransform>
            <ScaleTransform x:Name="ttt" ScaleX="3" ScaleY="6"/>
        </Button.LayoutTransform>
        <Button.Triggers>
            <EventTrigger RoutedEvent="Path.Loaded">
                <EventTrigger.Actions>
                    <BeginStoryboard>
                        <Storyboard RepeatBehavior="Forever">
                            <DoubleAnimation
                                Storyboard.Target="{Binding ElementName=ttt}"
                                Storyboard.TargetProperty="ScaleX"
                                From="10"
                                To="5"
                                Duration="0:0:1"
                                />                                
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger.Actions>
            </EventTrigger>
        </Button.Triggers>
        Button
    </Button>

但它确实有用

<Button                         
         Name="button1" Width="100" >
        <Button.LayoutTransform>
            <ScaleTransform x:Name="ttt" ScaleX="3" ScaleY="6"/>
        </Button.LayoutTransform>
        <Button.Triggers>
            <EventTrigger RoutedEvent="Path.Loaded">
                <EventTrigger.Actions>
                    <BeginStoryboard>
                        <Storyboard RepeatBehavior="Forever">
                            <DoubleAnimation
                                Storyboard.Target="{Binding ElementName=button1}"
                                Storyboard.TargetProperty="Width"
                                From="100"
                                To="50"
                                Duration="0:0:1"
                                />                                
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger.Actions>
            </EventTrigger>
        </Button.Triggers>
        Button
    </Button>

我知道我可以使用Storyboard.TargetName。

1 个答案:

答案 0 :(得分:3)

我认为你的问题是ScaleTransform不是Visual Tree的一部分,因此{Binding ElementName=ttt}表达式无法找到它。

但是,您可以尝试使用以下代码:

Storyboard.TargetName="ttt"

希望这有效。祝你好运!