Windows runtime 保存WinRT应用程序设置的最佳方法?

Windows runtime 保存WinRT应用程序设置的最佳方法?,windows-runtime,save,settings,permanent,Windows Runtime,Save,Settings,Permanent,我正在开发一个WinRT应用程序,它实际上也是一个游戏。我需要保留不同的信息,例如音频设置或播放器统计信息,以文件的形式或以某种方式保存。如果是文件,只需将设置写入或?我有一个想法,但我觉得太初级了。。。实现这一目标的最佳途径是什么 非常感谢任何帮助或建议 MSDN已经发布 名称空间包含您需要的所有类 提供允许开发人员定义Windows shell的“设置”窗格中显示的应用程序设置的类。设置窗格为用户提供了访问应用程序设置的一致位置 基本上,这些类允许您存储应用程序设置,并将它们挂接到所有应用程

我正在开发一个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;
        }
    }
}