我有来自静态类的静态属性的绑定值的问题.
我的课:
namespace MyNamespace.Data { public static class MySettings { public static Color BackgroundColor { get; set; } public static Color FontColor { get; set; } } }
XAML:
...
当我运行此代码后,后台设置正常,但其余部分保持不变..
问题是您的源属性属于Color
类型和目标属性Brush
.您可以SolidColorBrush
使用以下颜色创建:
<Button Content="Text"> <Button.Background> <SolidColorBrush Color="{Binding Source={x:Static s:MySettings.BackgroundColor}}"/> </Button.Background> <Button.Foreground> <SolidColorBrush Color="{Binding Source={x:Static s:MySettings.FontColor}}"/> </Button.Foreground> <Button.BorderBrush> <SolidColorBrush Color="{Binding Source={x:Static s:MySettings.FontColor}}"/> </Button.BorderBrush> </Button>
您不需要使用static
属性...您可以使用Singleton
模式声明一个类,因此只能有一个实例,就像一个static
类一样.只需public
在此类中使用常规CLR属性......类似这样(但具有属性):
public class StateManager : INotifyPropertyChanged { private static StateManager instance; private StateManager() { } public StateManager Instance { get { return instance ?? (instance = new StateManager()); } } ... }
然后只使用如下Instance
属性从基本视图模型引用它:
public StateManager StateManager { get { return StateManager.Instance; } }
然后您可以简单地访问UI中的属性,例如::
<Ribbon:RibbonCheckBox Grid.Row="1" Label="Audit fields" IsChecked="{Binding StateManager.AreAuditFieldsVisible}" ... /> <Ribbon:RibbonCheckBox Grid.Row="2" Label="ISRCs on results" IsChecked="{Binding StateManager.AreIsrcsVisibleOnSearchResults}" ... />