2011-02-03 135 views
2

我使用兩種文本顏色ColorA和ColorB創建自定義控件。 ColorA連接到控件的Foreground屬性,並將ColorB連線到名爲ForegroundAlt的自定義依賴項屬性。這兩個屬性都是Brush對象。該控件的XAML獲得使用該標記的屬性值:XAML:將筆刷轉換爲顏色?

<SolidColorBrush x:Key="BrushA" Color="{Binding Path=Foreground, RelativeSource={RelativeSource TemplatedParent}}" /> 

<SolidColorBrush x:Key="BrushB" Color="{Binding Path=ForegroundAlt, RelativeSource={RelativeSource TemplatedParent}}" /> 

我需要動畫兩種顏色間的中小企業的文本在控制模板,這就是我遇到的問題。

通常情況下,我會簡單地創建一個數據綁定到每個Brush.Color財產,像這樣:

To="{Binding Source={StaticResource BrushB}, Path=Color}" 

但是,這不會在這裏工作。事實證明,you can't use bindings on an animation inside a control template

作爲一種變通方法,我想打造一雙Color資源使用畫筆資源附和:

<Color x:Key="ColorA" ??? /> 
<Color x:Key="ColorB" ??? /> 

每個Color資源應該有其相應的畫筆的顏色。然後,我可以將這些顏色作爲靜態資源引用,並避免在動畫中綁定數據。

所以,這裏是我的問題:

- 我怎麼會宣佈Color資源?

- 有沒有簡單的方法來完成工作?

感謝您的幫助。

回答

0

如果我已經正確地理解了這一點,你所嘗試的將無法工作。即使您將顏色定義爲資源,您仍然必須將它們綁定到畫筆資源,而您又回到了原點!

一個解決方案是在代碼後面執行,而不是在模板中執行。由於您構建的自定義控件應該非常簡單,可以將其添加到後面的代碼中,而不會影響設計。

+0

我認爲它會工作,只要我不在動畫中使用數據綁定。但我正在研究一種避免第二對資源的更好方法。如果它有效,我會在這裏發佈。 – 2011-02-03 16:05:31