2017-06-07 4 views
0

In meiner WPF-Anwendung habe ich Einstellungen von Properties.Settings.Default.Something zugegriffen. In diesen Benutzereinstellungen speichere ich verschiedene Textbox, Radiobutton, Checkbox-Werte. Ich brauche Sätze dieser Einstellungen abhängig von einer Combobox-Wahl, und speicherte sie. Zum Beispiel wählt der Benutzer "1" in der Combobox, setzt den Text in das Textfeld, wählt 2 aus und setzt den Text erneut in das Textfeld. Nach dem erneuten Öffnen der Anwendung möchte ich diese Textbox Werte gespeichert. Der Inhalt von Combobox-Optionen wird dynamisch generiert.WPF So erstellen, speichern und laden Sie mehrere Einstellungsdateien

Ich weiß, dass diese Einstellungen in der Konfigurationsdatei unter Users/appdata/... gespeichert sind, aber ich habe keine Ahnung, wie und ob es sogar möglich ist, mehrere Dateien wie diese manuell zu speichern und zur Laufzeit zu laden.

Antwort

0

Serialisieren Sie sie als XML-Datei. Hier ist ein generisches Beispiel, wie man das macht. Bitte beachten Sie auch DataContracthere

C#

private static T ReadXmlFile<T>(string path) where T : class 
    { 

     T result = null; 
      if (File.Exists(path)) 
      { 

       try 
       { 
        using (XmlReader reader = XmlReader.Create(path)) 
        { 
         DataContractSerializer serializer = new DataContractSerializer(typeof(T)); 
         result = (T)serializer.ReadObject(reader); 
        } 
       } 
       catch (Exception ex) 
       { 
        throw ex; // or what ever 
       } 
      } 
      return result; 
     } 

    private static void WriteXmlFile<T>(string path, T content2write) where T : class 
    { 
     if (!Directory.Exists(Path.GetDirectoryName(path))) 
     { 
      Directory.CreateDirectory(Path.GetDirectoryName(path)); 
     } 


     using (XmlWriter writer = XmlWriter.Create(path, 
                new XmlWriterSettings 
                { 
                 Indent = true, 
                 IndentChars = " ", 
                 Encoding = Encoding.UTF8, 
                 CloseOutput = true 
                })) 
     { 
      DataContractSerializer serializer = new DataContractSerializer(typeof(T)); 
      serializer.WriteObject(writer, content2write); 
     } 
    } 

Vielleicht sie in Ihrem eigenen AppData -Ordner mit Environment.SpecialFolder.LocalApplicationData sparen ;-) und gehen wie diese

private static readonly string MyPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), @"MyApp\AppDescription"); 
Verwandte Themen