在xaml代码中按名称引用xaml控件,而不是在C#中引用?

时间:2011-07-04 19:09:29

标签: xaml controls reference expression-blend

我刚刚意识到Xaml有多么神奇(通常我只是在visual studio中设计UI)。我正在使用Expression Blend完成我的所有工作,并且不确定我是否可以做某事。

我正在观看youtube上的教程,关于创建动画,并希望做一些不同的事情。它与增加和减少椭圆的不透明度有关。有问题的代码:

<Canvas.Resources>
    <Storyboard x:Key="brighter">
        <DoubleAnimation 
        Storyboard.TargetName="ellipse"
        Storyboard.TargetProperty="Opacity"
        From="0.1" To="1.0" Duration="0:0:0.25"
        />              
    </Storyboard>       
    <Storyboard x:Key="dimmer">
        <DoubleAnimation 
        Storyboard.TargetName="ellipse"
        Storyboard.TargetProperty="Opacity"
        From="1.0" To="0.1" Duration="0:0:0.25"
        />              
    </Storyboard>       
</Canvas.Resources>

我想要的是,而不是'From =“0.1”'和'To =“0.1”',我希望它从或开始,或者转到椭圆的当前不透明度值

所以喜欢:

From=ellipse.Opacity To='1.0'

但我不知道你是否可以在Xaml中做到这一点(我的猜测是你不能)。你能在xaml中引用一个xaml控件吗?

由于

修改

对于其他寻找解决方案的人来说,使用Bindings ....所以代替:

From="0.1"

使用

From="{Binding ellipse.Opacity}" <!--ellipse is the name of the control you are referencing-->

1 个答案:

答案 0 :(得分:0)

如果我没记错的话,你应该可以删除“from”属性。这样,动画总是从当前值运行到指定的值。 类似的东西:

<Canvas.Resources>
  <Storyboard x:Key="brighter">
    <DoubleAnimation
         Storyboard.TargetName="ellipse"
         Storyboard.TargetProperty="Opacity"
         To="1.0" Duration="0:0:0.25" />
  </Storyboard>
  <Storyboard x:Key="dimmer">
    <DoubleAnimation
         Storyboard.TargetName="ellipse"
         Storyboard.TargetProperty="Opacity"
         To="0.1" Duration="0:0:0.25" />
  </Storyboard>
</Canvas.Resources>