2017-01-27 4 views
0

保存機能が終了すると、複合設定が正しく保存され、取得されます。ただし、Visual Studioランタイムインスタンスを終了してプロジェクトを再実行した後は、合成値はデフォルトに戻ります。ここで何が間違っているのでしょうか?複合設定値はアプリケーションを閉じた後に保存されません

保存

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"]; 
} 

あなたが値LocalSettingsIPropertySetに複合設定を追加する必要がありますビルド

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

何PropA' 'のタイプ? –

答えて

3

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"]; 
} 

編集:あなたSaveSettings()方法でlocalSettings.Values["Test"]キーをリセットしてください:

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

保存機能に「新しいWindows.Storage.ApplicationDataCompositeValue()」が必要と思われるのは、ViewModelを起動するたびにBuildSettingsで行われるためです。 – usefulBee

+0

SaveSettings()メソッドのlocalSettings.Values ["Test"]キーをリセットしてみてください。私は私の答えを編集しました。 – mm8

関連する問題