首先,您property
实际上不是财产,而是领域。最小的属性声明如下所示:
public static SolidColorBrush Property { get; set; }
请注意,该名称以大写字母开头,这是C#中广泛接受的编码约定。
因为您还希望每当属性值更改时都发出更改通知,因此您需要声明一个属性更改的事件(对于非静态属性,通常通过实现INotifyPropertyChanged接口来完成)。
对于静态属性,WPF 4.5(或4.0?)中提供了一种新机制,您可以在其中编写如下的静态属性更改事件和属性声明:
public static class AppStyle
{
public static event PropertyChangedEventHandler StaticPropertyChanged;
private static void OnStaticPropertyChanged(string propertyName)
{
StaticPropertyChanged?.Invoke(null, new PropertyChangedEventArgs(propertyName));
}
private static SolidColorBrush property = Brushes.Red; // backing field
public static SolidColorBrush Property
{
get { return property; }
set
{
property = value;
OnStaticPropertyChanged("Property");
}
}
public static void ChangeTheme()
{
Property = Brushes.Blue;
}
}
Background="{Binding Path=(style:AppStyle.Property)}"