WPF 尝试保存颜色,但当我再次运行应用程序时,它始终是白色的
本文关键字:应用程序 白色 运行 保存 颜色 WPF | 更新日期: 2023-09-27 18:32:54
我试图让用户有可能改变应用程序的颜色。我正在使用 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 void ColorChange(String _Main_B, String _Main_TopBar)
{
var converter = new BrushConverter();
try
{
Background.Fill = (Brush)converter.ConvertFromString(_Main_B);
TopBarMain.Background = (Brush)converter.ConvertFromString(_Main_TopBar);
}
catch (Exception e)
{
MessageBox.Show(e.Message);
Background.Fill = (Brush)converter.ConvertFromString("#E5EEEEEE");
TopBarMain.Background = (Brush)converter.ConvertFromString("#7FC3C3C3");
}
}
我这样称呼它,然后运行一个应用程序:
public MainWindow()
{
InitializeComponent();
ColorChange(Settings.Default.Main_Background, Settings.Default.Main_TopBack);
option = new Options(this);
}
其中选项为:
选项选项;
调用选项类。我已经不知道问题出在哪里了。请帮忙。
好的,
我做到了。问题是,当组件初始化时,我正在更改颜色画布的选定颜色,然后所选颜色事件会自动运行,它将我的设置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();
}
}
但是感谢您的帮助。