Windows runtime 保存WinRT应用程序设置的最佳方法?
我正在开发一个WinRT应用程序,它实际上也是一个游戏。我需要保留不同的信息,例如音频设置或播放器统计信息,以文件的形式或以某种方式保存。如果是文件,只需将设置写入或?我有一个想法,但我觉得太初级了。。。实现这一目标的最佳途径是什么 非常感谢任何帮助或建议 MSDN已经发布 名称空间包含您需要的所有类 提供允许开发人员定义Windows shell的“设置”窗格中显示的应用程序设置的类。设置窗格为用户提供了访问应用程序设置的一致位置Windows runtime 保存WinRT应用程序设置的最佳方法?,windows-runtime,save,settings,permanent,Windows Runtime,Save,Settings,Permanent,我正在开发一个WinRT应用程序,它实际上也是一个游戏。我需要保留不同的信息,例如音频设置或播放器统计信息,以文件的形式或以某种方式保存。如果是文件,只需将设置写入或?我有一个想法,但我觉得太初级了。。。实现这一目标的最佳途径是什么 非常感谢任何帮助或建议 MSDN已经发布 名称空间包含您需要的所有类 提供允许开发人员定义Windows shell的“设置”窗格中显示的应用程序设置的类。设置窗格为用户提供了访问应用程序设置的一致位置 基本上,这些类允许您存储应用程序设置,并将它们挂接到所有应用程
基本上,这些类允许您存储应用程序设置,并将它们挂接到所有应用程序设置的标准位置。您的用户不必学习任何新内容,设置将位于预期位置。以下是在WinRT应用程序中保存数据的一些方法,名称中带有设置的方法可能就是您要查找的方法!-还添加了其他数据,-如果需要,还可以序列化数据。这是一段有效的代码,但别忘了添加错误处理等。这是一段简单的演示代码:) 对于设置,可以将简单设置保存为键和值,对于更复杂的设置,可以使用容器。我在这里提供了两个示例=)
公共类存储示例
{
公共异步任务ReadTextFileAsync(字符串路径)
{
var folder=ApplicationData.Current.LocalFolder;
var file=await folder.GetFileAsync(路径);
返回wait FileIO.ReadTextAsync(文件);
}
公共异步void WriteTotextFileAsync(字符串文件名、字符串内容)
{
var folder=ApplicationData.Current.LocalFolder;
var file=await folder.CreateFileAsync(文件名,CreationCollisionOption.ReplaceExisting);
等待FileIO.WriteTextAsync(文件,内容);
}
公共void保存设置(字符串键、字符串内容)
{
ApplicationData.Current.LocalSettings.Values[key]=内容;
}
公共字符串加载设置(字符串键)
{
var settings=ApplicationData.Current.LocalSettings;
返回设置。值[key]。ToString();
}
public void savesetingsincontainer(字符串用户、字符串键、字符串内容)
{
var localSetting=ApplicationData.Current.LocalSettings;
CreateContainer(用户,ApplicationDataCreateDisposition.Always);
if(localSetting.Containers.ContainsKey(用户))
{
localSetting.Containers[user].Values[key]=contents;
}
}
}
非常感谢,但我现在的问题是:我不能以某种方式将所有设置保存在一个文件中吗。。。?只是在应用程序启动时需要从文件中读取文本行,还是在保存时将该文件重写为文本?这是一个好的实践吗?容器会给你这种可能性-只需更新你想要更改的键的值。如果有很多数据,你也可以使用一个小数据库,比如SQLite,它有一个.Net包装器,-只要确保你使用异步实现。根据您告诉我们的,我仍然建议使用复合/容器设置。
public class StorageExamples
{
public async Task<string> ReadTextFileAsync(string path)
{
var folder = ApplicationData.Current.LocalFolder;
var file = await folder.GetFileAsync(path);
return await FileIO.ReadTextAsync(file);
}
public async void WriteTotextFileAsync(string fileName, string contents)
{
var folder = ApplicationData.Current.LocalFolder;
var file = await folder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting);
await FileIO.WriteTextAsync(file, contents);
}
public void SaveSettings(string key, string contents)
{
ApplicationData.Current.LocalSettings.Values[key] = contents;
}
public string LoadSettings(string key)
{
var settings = ApplicationData.Current.LocalSettings;
return settings.Values[key].ToString();
}
public void SaveSettingsInContainer(string user, string key, string contents)
{
var localSetting = ApplicationData.Current.LocalSettings;
localSetting.CreateContainer(user, ApplicationDataCreateDisposition.Always);
if (localSetting.Containers.ContainsKey(user))
{
localSetting.Containers[user].Values[key] = contents;
}
}
}