Best Way to keep Settings for a WinRT App?

后端 未结 2 1381
长发绾君心
长发绾君心 2021-02-06 09:58

I\'m working on a WinRT app that\'s actually also a game. I need to keep different information such as audio settings or player statistics somewhere in sort of a file or somehow

2条回答
  •  后悔当初
    2021-02-06 10:54

    Here are some ways to save Data in a WinRT app, the method with Settings in the name is probably what you are looking for!- just added the other ones as well,- you also can serialize data if you want to. This is working code- but don't forget to add error handling etc. It's a simple demo code :)

    As for settings, you can save simple settings as key and values, and for more complex settings you can use a container. I've provided both examples here =)

     public class StorageExamples
    {
        public async Task 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;
            }
        }
    }
    

提交回复
热议问题