c# - 如何将枚举保存到 ApplicationData.Current.LocalSettings

标签 c# windows-8 windows-runtime

事实证明,当您尝试存储枚举值时,WinRT 保存设置的能力会引发异常。 MSDN 在页面上说 "Accessing app data with the Windows Runtime"只有"Runtime Data Types"得到支持。

那么,如何保存枚举?

最佳答案

这是一个非常奇怪的行为。但很容易解决。

首先你需要像这样的某种类型的解析例程:

T ParseEnum<T>(object value)
{
    if (value == null)
        return default(T);
    return (T)Enum.Parse(typeof(T), value.ToString());
}

注意:ENUM 的默认值始终是它的 0 值成员。

然后你可以像这样与它交互:

var _Settings = ApplicationData.Current.LocalSettings.Values;

// write
_Settings["Color"] = MyColors.Red.ToString()

// read
return ParseEnum<MyColors>(_Settings["Color"]);

基本上,我们只是将其转换为字符串。

关于c# - 如何将枚举保存到 ApplicationData.Current.LocalSettings,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12748944/

相关文章:

c# - 访问结构的字段

c# - 如何使用 C# 制作几个不同的列表?

c# - 自动滚动到 WinRT 应用程序中的 ListView 底部

c# - 在列表<T>中查找findall

c# - Windows Phone,即使只有弱引用,垃圾收集器也不会清理 View

c# - 应用栏中的多个按钮

windows-8 - 将本地HTML加载到WebView中

xaml - 如何创建可变大小的组面板以适合 Windows 8 XAML 中的项目

C++ 应用缺少 winrt::Windows::Storage::Streams::DataWriter

c# - 在 DataContext = NULL 上下文中使用 ContentTemplateSelector 的 ContentPresenter?