Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF正在尝试保存颜色,但当我再次运行应用程序时,它将';它总是白色的_C#_Wpf_Colors - Fatal编程技术网

C# WPF正在尝试保存颜色,但当我再次运行应用程序时,它将';它总是白色的

C# WPF正在尝试保存颜色,但当我再次运行应用程序时,它将';它总是白色的,c#,wpf,colors,C#,Wpf,Colors,我试图给用户一个改变应用程序颜色的可能性。我正在使用WPF扩展工具包获取颜色,然后将其保存到设置中,以便在再次运行时应用颜色。问题是,对于矩形,它可以完美地工作,但对于标签和背景,当我再次运行应用程序时,它会自动变为白色,而不是保存的颜色。这是我的密码: 选项类和xaml public Options(MainWindow main) { InitializeComponent(); window = main; BackgroundCo

我试图给用户一个改变应用程序颜色的可能性。我正在使用WPF扩展工具包获取颜色,然后将其保存到设置中,以便在再次运行时应用颜色。问题是,对于矩形,它可以完美地工作,但对于标签和背景,当我再次运行应用程序时,它会自动变为白色,而不是保存的颜色。这是我的密码:

选项类和xaml

public Options(MainWindow main)
    {
        InitializeComponent();
        window = main;

        BackgroundColor.SelectedColor = (Color)ColorConverter.ConvertFromString(Settings.Default.Main_Background);
        TopBarBackColor.SelectedColor = (Color)ColorConverter.ConvertFromString(Settings.Default.Main_TopBack);
    }

    private void Color_SelectedColorChanged(object sender, RoutedPropertyChangedEventArgs<Color> e)
    {
        Settings.Default.Main_Background = BackgroundColor.HexadecimalString;
        Settings.Default.Main_TopBack = TopBarBackColor.HexadecimalString;
        Settings.Default.Save();
        window.ColorChange(Settings.Default.Main_Background, Settings.Default.Main_TopBack);

    }
我这样称呼它,然后运行一个应用程序:

public MainWindow()
    {
        InitializeComponent();

        ColorChange(Settings.Default.Main_Background, Settings.Default.Main_TopBack);

        option = new Options(this);

    }
其中选项为:

期权

去看涨期权课。
我不知道问题出在哪里了。请帮忙。

好的,我做到了。问题是,当组件初始化时,我正在更改颜色画布的选定颜色,然后选定颜色事件自动运行,它正在将mine Settings Main_TopBack变量更改为默认值(白色)并保存它。我所做的只是实现了布尔控制,如果颜色是这样加载的:

bool ColorsLoaded = false;
    public Options(MainWindow main)
    {
        InitializeComponent();
        window = main;

        BackgroundColor.SelectedColor = (Color)ColorConverter.ConvertFromString(Settings.Default.Main_Background);
        TopBarBackColor.SelectedColor = (Color)ColorConverter.ConvertFromString(Settings.Default.Main_TopBack);

        ColorsLoaded = true;
    }

    private void Color_SelectedColorChanged(object sender, RoutedPropertyChangedEventArgs<Color> e)
    {
        if (ColorsLoaded)
        {
            Settings.Default.Main_Background = BackgroundColor.HexadecimalString;
            Settings.Default.Main_TopBack = TopBarBackColor.HexadecimalString;
            Settings.Default.Save();
            window.ColorChange();
        }

    }
bool ColorsLoaded=false;
公共选项(主窗口主窗口)
{
初始化组件();
窗口=主窗口;
BackgroundColor.SelectedColor=(Color)ColorConverter.ConvertFromString(Settings.Default.Main\u Background);
TopBarBackColor.SelectedColor=(颜色)ColorConverter.ConvertFromString(Settings.Default.Main\u TopBack);
ColorsLoaded=真;
}
私有无效颜色\u SelectedColorChanged(对象发送方,RoutedPropertyChangedEventArgs e)
{
如果(彩色标记)
{
Settings.Default.Main_Background=BackgroundColor.HexadecimalString;
Settings.Default.Main_TopBack=TopBarBackColor.HexadecimalString;
Settings.Default.Save();
window.ColorChange();
}
}

不过,谢谢您的帮助。

如果您在主窗口的ColorChange处设置断点,那么Main_Background和Main_TopBack的值是多少?您是说当我加载颜色时?在MainWindow()中?是否调用过Color_SelectedColorChanged?是的,这是颜色画布中扩展WPF工具箱中的事件。它在颜色改变时运行。“背景”的颜色始终正确存储,并始终正常工作。只有标签颜色永远不会保存,但在我使用颜色画布时它会更改。因此,在主窗口中,当您加载颜色时,设置是否会保留正确的颜色。默认值是否保留正确的颜色?
bool ColorsLoaded = false;
    public Options(MainWindow main)
    {
        InitializeComponent();
        window = main;

        BackgroundColor.SelectedColor = (Color)ColorConverter.ConvertFromString(Settings.Default.Main_Background);
        TopBarBackColor.SelectedColor = (Color)ColorConverter.ConvertFromString(Settings.Default.Main_TopBack);

        ColorsLoaded = true;
    }

    private void Color_SelectedColorChanged(object sender, RoutedPropertyChangedEventArgs<Color> e)
    {
        if (ColorsLoaded)
        {
            Settings.Default.Main_Background = BackgroundColor.HexadecimalString;
            Settings.Default.Main_TopBack = TopBarBackColor.HexadecimalString;
            Settings.Default.Save();
            window.ColorChange();
        }

    }