0

我在按鈕內部有一個自定義控件。在控件的模板中,我有一個矩形和一個文本塊。當按下按鈕時,VSM動畫化按鈕的「(Button.Foreground)。(SolidColorBrush.Color)」屬性,該屬性傳播到文本塊,以便文本的顏色發生更改。將矩形的填充顏色填充爲前景色

如何將矩形的fill屬性設置爲相同的畫筆?我試過「{TemplateBinding Foreground}」,「{Binding Path = Foreground,RelativeSource = {RelativeSource Self}}」,甚至在代碼中創建綁定(在OnApplyTemplate中) - 根本不起作用,或者最初設置顏色不是動畫。我也嘗試過使用元素綁定來將矩形的Fill屬性綁定到TextBlock的Foreground屬性,結果相同(初始顏色正常,但動畫顏色不同)。

在此先感謝。

回答

0

我認爲這可能是WP 7.1中的一個bug。

找到了解決方法。爲了讓所有的工作:

  • 在定製控件模板,指定Fill="{TemplateBinding Foreground}"
  • 在按鈕模板,裏面<VisualState x:Name="Normal">,設置前景色爲正常狀態。

當初始前景值按鈕的風格來自<Setter Property="Foreground" ...,當視覺狀態管理器動畫前臺值,TextBlock的對象接收新的值,但是<Rectangle Fill="{TemplateBinding Foreground}"撐繪有舊顏色。

當初始值來自可視狀態管理器時,自定義控件模板中的矩形正確地接收新屬性值,因爲VSM動畫顏色更改。

+0

出於某種原因,它在按鈕模板內工作正常,但在列表框項目模板中不起作用:-( – Soonts