2017-01-27 2 views
0

Am Ende der Speicherfunktion werden die Composite-Einstellungen korrekt gespeichert und abgerufen. Nach dem Schließen der Visual Studio-Laufzeitinstanz und dem erneuten Ausführen des Projekts werden jedoch die zusammengesetzten Werte auf den Standardwert zurückgesetzt. Was könnte hier falsch sein?Composite-Einstellungswerte, die nach dem Schließen der App nicht gespeichert wurden

Speichern

private void SaveSettings() 
    { 
     var localSettings = Windows.Storage.ApplicationData.Current.LocalSettings; 
     var compositeTest = (Windows.Storage.ApplicationDataCompositeValue)localSettings.Values["Test"]; 

     // Save test 
     compositeTest["A"] = PropA; 
     compositeTest["B"] = PropB; 
     compositeTest["C"] = PropC; 

     // Retrieve test 
     var a = compositeTest["A"]; 
     var b = compositeTest["B"]; 
     var c = compositeTest["C"]; 
} 

Bauen

private void BuildSettings() 
    { 
     var localSettings = Windows.Storage.ApplicationData.Current.LocalSettings; 
     var compositeTest = (Windows.Storage.ApplicationDataCompositeValue)localSettings.Values["Test"]; 

      if (compositeTest == null) 
      { 
       Windows.Storage.ApplicationDataCompositeValue composite = new Windows.Storage.ApplicationDataCompositeValue(); 

       composite["A"] = PropA= 1; 
       composite["B"] = PropB= 1; 
       composite["C"] = PropC= 1; 

       localSettings.Values["Test"] = composite; 
      } 
      else 
      { 
       PropA= (int)compositeTest["A"]; 
       PropB= (int)compositeTest["B"]; 
       PropC= (int)compositeTest["C"]; 
      } 
} 
+0

, was die Art der 'PropA'? –

Antwort

3

Sie benötigen die Verbund Einstellung, um die Werte zu addieren IPropertySet des LocalSettings:

private void SaveSettings() 
{ 
    var localSettings = Windows.Storage.ApplicationData.Current.LocalSettings; 
    var compositeTest = new Windows.Storage.ApplicationDataCompositeValue(); 

    compositeTest["A"] = "A"; 

    localSettings.Values["Test"] = compositeTest; 

} 

private void BuildSettings() 
{ 
    var localSettings = Windows.Storage.ApplicationData.Current.LocalSettings; 
    var compositeTest = localSettings.Values["Test"] as Windows.Storage.ApplicationDataCompositeValue; 

    var a = compositeTest["A"]; 
} 

Edit: Versuchen Sie, die localSettings.Values["Test"] Schlüssel in Ihrer SaveSettings() Methode zurück:

private void SaveSettings() 
{ 
    var localSettings = Windows.Storage.ApplicationData.Current.LocalSettings; 
    var compositeTest = (Windows.Storage.ApplicationDataCompositeValue)localSettings.Values["Test"]; 

    // Save test 
    compositeTest["A"] = PropA; 
    compositeTest["B"] = PropB; 
    compositeTest["C"] = PropC; 

    // Retrieve test 
    var a = compositeTest["A"]; 
    var b = compositeTest["B"]; 
    var c = compositeTest["C"]; 

    localSettings.Values["Test"] = compositeTest; 
} 
+0

Ich glaube nicht, dass "neue Windows.Storage.ApplicationDataCompositeValue()" in der Funktion "Speichern" benötigt wird, da dies in den BuildSettings jedes Mal getan wird, wenn das ViewModel gestartet wird. – usefulBee

+0

Versuchen Sie, die Taste localSettings.Values ​​["Test"] in Ihrer SaveSettings() -Methode zurückzusetzen. Ich habe meine Antwort bearbeitet. – mm8

Verwandte Themen