Если вы используете шаблон Model-View-ViewModel (MVVM) или что-то подобное, вы можете сделать цвет кисти (или всю кисть) свойством модели представления и привязать ее непосредственно к нему.
По моему (неопытному) мнению, ресурсы не должны меняться во время выполнения. Если это изменится, свяжите это.
(edit2: изменен с верхнего уровня UserControl в стиле Silverlight на окно WPF. Как отметил Рэй Бойсен в комментариях, UserControl в WPF выставляет цвет через DependencyProperty, не привязывая его к ViewModel.) *
XAML:
<Grid x:Name="LayoutRoot">
<Grid.Background>
<SolidColorBrush Color="{Binding BackgroundColor}" />
</Grid.Background>
...
Класс представления модели:
public class MyViewModel : INotifyPropertyChanged
{
public Color BackgroundColor
{
get { ... }
set { ... } // fire PropertyChanged event
}
...
XAML.cs:
public partial class MyWindow : Window
{
private MyViewModel m_viewmodel;
public MyWindow()
{
InitializeComponent();
viewmodel = new MyViewModel();
this.LayoutRoot.DataContext = viewmodel;
}
private void ButtonClick(object sender, RoutedEventArgs e)
{
this.viewmodel.BackgroundColor = Color.Red;
}
...