2014-11-01 148 views
0

據我所知按鈕不會創建新的實例,它使用共享資源。 爲什麼按鈕的背景是藍色而不是紅色?WPF資源 - 共享?

XAML:

<StackPanel Name="st"> 
     <Button Margin="50" Name="btn" Height="50">Click</Button> 
    </StackPanel> 

後面的代碼:

st.Resources.Add("Back", Brushes.Blue); 
     btn.Background = (Brush)btn.TryFindResource("Back"); 
     st.Resources["Back"] = Brushes.Red; 

回答

1

一旦設置Background,它只是一種快照的。在此之後更改資源不會更改Background。您必須使用SetResourceReference方法使用某種設置資源參考,如下所示:

st.Resources.Add("Back", Brushes.Blue);     
btn.SetResourceReference(Control.BackgroundProperty, "Back"); 
st.Resources["Back"] = Brushes.Red;