帮助类代码:
public partial class UserSetting { public static string setting_filename = "user_setting.json"; public static string music_volume = "background_music_volume"; public static string sound_volume = "sound_effect_volume"; public static string is_full_screen = "is_full_screen"; } public partial class UserSetting { // public async static Task<UserSetting> ReadSetting() { StorageFolder folder = ApplicationData.Current.LocalFolder; var file = await folder.TryGetItemAsync(setting_filename); if (file != null) { try { string settting_string = await FileIO.ReadTextAsync((StorageFile)file); UserSetting setting = JsonConvert.DeserializeObject<UserSetting>(settting_string); return setting; } catch (Exception) { var default_setting = new UserSetting(); return default_setting; } } else { var default_setting = new UserSetting(); return default_setting; } } public async static void SaveSetting(UserSetting setting) { string settting_string = JsonConvert.SerializeObject(setting); StorageFolder folder = ApplicationData.Current.LocalFolder; var file = await folder.CreateFileAsync(setting_filename, CreationCollisionOption.ReplaceExisting); await FileIO.WriteTextAsync(file, settting_string); } public static void WriteSetting<T>(string key, T Tvalue)// where T : struct { ApplicationDataContainer root = ApplicationData.Current.LocalSettings; if (root.Values.TryGetValue(key, out object oldkey)) { root.Values[key] = Tvalue; } else { root.Values.Add(key, Tvalue); } } public static T ReadSetting<T>(string key) { ApplicationDataContainer root = ApplicationData.Current.LocalSettings; if (root.Values.TryGetValue(key, out object value)) { return (T)value; } else { return default(T); } } public static T ReadSetting<T>(string key,T default_value) { ApplicationDataContainer root = ApplicationData.Current.LocalSettings; if (root.Values.TryGetValue(key, out object value)) { return (T)value; } else { return default_value; } } }使用:
public bool Is_full_screen { get { return UserSetting.ReadSetting<bool>(UserSetting.is_full_screen); } set { UserSetting.WriteSetting(UserSetting.is_full_screen, value); } } public double Music_volume { get { return UserSetting.ReadSetting<double>(UserSetting.music_volume,0.5); } set { UserSetting.WriteSetting(UserSetting.music_volume, value); OnPropertyChanged(); } } public double Sound_volume { get { return UserSetting.ReadSetting<double>(UserSetting.sound_volume,0.5); } set { UserSetting.WriteSetting(UserSetting.sound_volume, value); OnPropertyChanged(); } }