2010-12-14 57 views
1

當鼠標懸停時,我嘗試設置控件的背景顏色。我試圖通過視覺狀態管理器來做到這一點。我能得到下面的代碼運行:在ObjectAnimationUsingKeyFrames中使用TemplateBinding

<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Control.Background" Storyboard.TargetName="BorderBackground"> 
    <DiscreteObjectKeyFrame KeyTime="0"> 
     <DiscreteObjectKeyFrame.Value> 
      <SolidColorBrush Color="#FF123456" /> 
     </DiscreteObjectKeyFrame.Value> 
    </DiscreteObjectKeyFrame> 
</ObjectAnimationUsingKeyFrames> 

但我不希望設置在模板的顏色,但它綁定到控件的值。我與嘗試過「Tag'屬性按以下方式:

<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Control.Background" Storyboard.TargetName="BorderBackground"> 
    <DiscreteObjectKeyFrame KeyTime="0"> 
     <DiscreteObjectKeyFrame.Value> 
      <SolidColorBrush Color="{TemplateBinding Tag}" /> 
     </DiscreteObjectKeyFrame.Value> 
    </DiscreteObjectKeyFrame> 
</ObjectAnimationUsingKeyFrames> 

,並設定一個使用這種風格來控制的標籤,屬性‘#FF123456’。

但這不起作用。它不會給我留下錯誤信息,它不會改變背景顏色。任何人都知道,問題可能是什麼?

由於提前,
弗蘭克

回答

2

不幸的是你試圖做它不會在Silverlight的工作方式。 VisualStateManager動畫不是顯示樹的一部分,所以你不能使用綁定。儘管你有選擇,StaticResources(也就是在資源字典中設置顏色)和基於代碼的動畫是不同的解決方法(具體取決於你想要做什麼)。對於後者檢查一個線程,我問了一個類似的問題:How can I animate a property dynamically in a Silverlight 4 UserControl?

+0

這是一個可憐的,非常感謝!現在我可以停止嘗試:/ – Aaginor 2010-12-20 16:56:19

0

你不能在一個目標上動態地執行它,但你可以做的是創建另一個目標(例如稱爲BorderBackgroundAlt),它的背景可以顯式設置到它的聲明中的{TemplateBinding Tag}。

然後,您可以使BorderBackgroundAlt默認摺疊,並且在您的動畫框架中代替切換顏色,切換可見性,以便BorderBackground被摺疊並且BorderBackgroundAlt可見。

相關問題