绑定到WPF中静态类中的静态属性

 小桃爱学PHP 发布于 2023-02-04 16:23

我有来自静态类的静态属性的绑定值的问题.

我的课:

namespace MyNamespace.Data
{
    public static class MySettings
    {
        public static Color BackgroundColor { get; set; }
        public static Color FontColor { get; set; }
    }
}

XAML:


 ...

当我运行此代码后,后台设置正常,但其余部分保持不变..

2 个回答
  • 问题是您的源属性属于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>
    

    2023-02-04 16:24 回答
  • 您不需要使用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}" ... />
    

    2023-02-04 16:24 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有