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