在我的UWP应用程序中存储设置的简单方法

时间:2016-06-30 03:03:05

标签: uwp

我在我的UWP应用程序中使用MVVM作为我的解决方案。我有一个名为Settings的类。我想把它存放在光盘上。我怎么能这样做?

3 个答案:

答案 0 :(得分:3)

最好的方法是使用 ApplicationData.LocalSettings 。请记住,这应仅用于存储设置和用户首选项(而不是用户数据,如文件或对象)。

要存储设置,请使用以下代码:

//Get reference to LocalSettings:

var localSettings = ApplicationData.Current.LocalSettings;
localSettings.Values["ServiceAddress"] = "<<Address of your service to store>>";

要从设置中获取价值,请使用以下代码:

var serviceAddressFromSettings = localSettings.Values["ServiceAddress"].ToString();

记得施展价值。

More to read at MSDN.

答案 1 :(得分:1)

如果您想存储与应用程序相关的设置,我建议您使用ApplicationData.LocalSettings

有了这个,你不需要明确指定从文件中读/写,这使得保存设置非常容易。

答案 2 :(得分:1)

我所做的是使用JSON.NET将类序列化和反序列化为可以存储的JSON字符串。这是我在解决方案中主要使用的静态类:

public static class SettingsService
{
    private const string SETTINGS_FILENAME = "Settings.json";
    private static StorageFolder _settingsFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
    public async static Task<Settings> LoadSettings()
    {
        try
        {
            StorageFile sf = await _settingsFolder.GetFileAsync(SETTINGS_FILENAME);
            if (sf == null) return null;

            string content = await FileIO.ReadTextAsync(sf);
            return JsonConvert.DeserializeObject<Settings>(content);
        }
        catch
        { return null; }
    }

    public async static Task<bool> SaveSettings(Settings data)
    {
        try
        {
            StorageFile file = await _settingsFolder.CreateFileAsync(SETTINGS_FILENAME, CreationCollisionOption.ReplaceExisting);
            string content = JsonConvert.SerializeObject(data);
            await FileIO.WriteTextAsync(file, content);
            return true;
        }
        catch
        {
            return false;
        }
    }
}

在这种情况下,我将设置存储在本地用户文件夹中(未漫游)。您还可以将其存储在漫游应用程序文件夹中,这样设置也可以为用户漫游到其他计算机。 要保存设置:

Settings settings = new Settings();
await SettingsService.SaveSettings(settings);

加载设置:

Settings settings = await SettingsService.LoadSettings();

请注意,并非所有类型都可以序列化。要排除的属性可以获得[JsonIgnore]属性。