private void LoadSettings(SettingsViewModel model) { // Load defaults // Load settings XmlDocument settingsDoc = App.settingsDoc; try { settingsDoc.Load(fileSettingsXMLPath); } catch (XmlException e) { System.Diagnostics.Debug.WriteLine("Error loading settings: " + e.Message); return; } catch (FileNotFoundException e) { System.Diagnostics.Debug.WriteLine("Error loading settings: " + e.Message); return; } IEnumerator docChildNodes = settingsDoc.ChildNodes.GetEnumerator(); while (docChildNodes.MoveNext()) { XmlNode currentNode = (docChildNodes.Current as XmlNode); if (currentNode.Name == "settings") { IEnumerator docNodes = currentNode.ChildNodes.GetEnumerator(); while (docNodes.MoveNext()) { XmlNode currentSubNode = (docNodes.Current as XmlNode); Setting setting = new Setting(); XmlAttributeCollection currentAttrib = currentSubNode.Attributes; string name = currentAttrib.GetNamedItem("name").Value ?? ""; Debug.WriteLine(name); string value = currentAttrib.GetNamedItem("value").Value ?? ""; Debug.WriteLine(value); string description = currentAttrib.GetNamedItem("description").Value ?? ""; Debug.WriteLine(description); IEnumerator attributes = currentAttrib.GetEnumerator(); while (attributes.MoveNext()) { XmlAttribute attr = (attributes.Current as XmlAttribute); Debug.WriteLine("Attribute"); Debug.WriteLine(attr.Name); Debug.WriteLine(attr.Value); } switch (currentSubNode.Name) { case "string": { setting = new StringSetting(name, value, description); break; } /*case "int":// TODO cast string to int * { * setting = new IntSetting(name, value, description); * break; * }*/ case "toggle": { setting = new ToggleSetting(name, (value == "true"), description); break; } default: { Debug.WriteLine("DEFAULT"); Debug.WriteLine(name + value + description); Debug.WriteLine(currentSubNode.Name); Debug.WriteLine(setting.Name + setting.Value + setting.Description); break; } } Debug.WriteLine(setting.ToString()); model.Settings.Add(setting); } } } }