2014-11-01 150 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;