c# - 如何在 WPF 中保存应用程序主题名称

标签 c# .net wpf devexpress

我正在使用 Devexpress 和 WPF。用户可以应用 devexpress 提供的不同主题。

 ThemeManager.ApplicationThemeName = Theme.MetropolisDarkName; //MetropolisDarkName is name of a Theme.

在我的应用程序中,用户可以选择要应用的任何主题。但是如果他关闭应用程序并再次打开它,主题变化就不一样了。我希望保存这些更改,以便如果用户在应用主题后再次打开它,则应保存并应用更改。

我是否必须将主题名称保存在数据库中,或者是否有任何其他方法可以解决此问题。我需要你的建议。 谢谢。

最佳答案

在 Visual Studio 中执行此操作的 super 简单方法是将新的 .settings 文件添加到您的项目,并定义 ThemeName 的设置。您可以在 C# 项目模板中的 General 下找到设置模板。设置文件本身只是一个设计器,具有 System.Configuration.ApplicationSettingsBase 类型的基础类。

创建的类将设置值保存到 app.config。巧妙的是,您可以将设置定义为应用程序或用户,因此在同一台机器上使用该应用程序的不同用户可以拥有自己的自定义设置。

以下假设您创建了文件 Settings.settings,其中包含一个名为 ThemeName 且类型为 string 的条目。

从设置中获取主题

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    ThemeManager.ApplicationThemeName = Properties.Settings.Default.ThemeName;
}

保存主题

public void SetTheme(string themeName) {
    ThemeManager.ApplicationThemeName = themeName;
    Properties.Settings.Default.ThemeName = themeName;
    Properties.Settings.Default.Save();
}

Settings on MSDN

关于c# - 如何在 WPF 中保存应用程序主题名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18280003/

相关文章:

c# - 如何使用旧代码读取扩展.proto 文件(textformat.merge)?

c# - 使用 CsvHelper 将引号写入特定的 CSV 字段

C# 和 Facebook API

.net - WPF ColumnDefinition 自动宽度 MinWidth 绑定(bind)

wpf - MyContainer 派生自 FrameworkElement,具有绑定(bind)支持

c# - 具有不同线程的 C# 中的计时器

c# - 是否存在限制解决方案的访问修饰符?

c# - 从 C# .NET Windows 应用程序调用 C++ dll 时出现运行时错误

c# - 在 Entity Framework 中使用带参数的存储过程

c# - 如何快速将非常大的文件呈现(不打开)到 UI 组件(TextBox)中