我在我的UWP应用程序中使用MVVM作为我的解决方案。我有一个名为Settings的类。我想把它存放在光盘上。我怎么能这样做?
答案 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();
记得施展价值。
答案 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]
属性。