2011-07-04 34 views
0

我剛剛意識到Xaml有多驚人(通常我只是在visual studio中設計UI)。我正在使用Expression Blend來完成我所有的工作,但我不確定我是否可以做某件事。在xaml代碼中引用xaml控件的名稱,而不是在C#中?

我在看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> 

我想是的,而不是「從=‘0.1’和To =‘0.1’',我希望它無論是從啓動,或轉到當前不透明度值橢圓

所以喜歡的:

From=ellipse.Opacity To='1.0' 

,但我不知道你是否能在XAML中做到這一點(我的猜測是,你不能)。你可以在xaml本身引用一個xaml控件嗎?

感謝

編輯

爲別人尋找解決方案,使用綁定....所以不是:

From="0.1" 

使用

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

見http://stackoverflow.com/questions/3783620/how-would-i-access-this-wpf-xaml-resource-programmatically如何從代碼 –

+0

訪問WPF資源據我所知,他正在訪問c#中的元素...我想能夠引用Xaml代碼本身的對象 – Toadums

+0

我想我誤解了。您可以像其他地方一樣使用綁定,並使用Binding中的ElementName屬性來引用另一個(已命名的)控件。 –

回答

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> 
相關問題