1

how I can saving List to settings in C# uwp?

define class for object

//class    

public class ListOfFile
        {
            public string File_DisplayName { get; set; }
            public string File_Name { get; set; }
            public string File_path { get; set; }
            public string File_Extension { get; set; }
            public StorageFile File_Storage { get; set; }
            public ImageSource File_Thumbnail { get; set; }
        }

define method For loadfile Method:

//method
void loadfile()
{
    List<ListOfFile> FileBind=new List<ListOfFile>();
     var FilesInFolder = await FolderItem.GetFilesAsync();

    foreach(var FileItem in FilesInFolder)
    {
           FileBind.Add(new ListOfFile()
                        {
                            File_DisplayName = FileItem.DisplayName,
                            File_Extension = FileItem.FileType
                        ,
                            File_Name = FileItem.Name
                        ,
                            File_path = FileItem.Path
                        ,
                            File_Thumbnail = bitmapimage
                        ,
                            File_Storage =FileItem
                        });
    }

    ApplicationData.Current.LocalSettings.Values["allfiles"]=FileBind;
}

end line Error :(

how I can saveing list in Settings? help me please.


I found the method to extract using datatable.

Code till Step 5 of this page and Answer of this page

4

3 に答える 3

6

UWP コミュニティ ツールキット - オブジェクト ストレージ

最初の質問が出されてから半年以上経っていることはわかっていますが、デバイス情報のシンプルなクラス リストをすばやく簡単に保存したいという同様の状況があったため、UWP ツールキットについてもっと早く知っていればよかったと思います。ローミング設定でローミングします。OPや私のような同様の状況にある他の誰かに使用される可能性がある場合に備えて、これをここに投稿します。

アプリケーションが Windows 10 Build 10586 以降をターゲットにしている場合、Microsoft のUWP Community Toolkitの一部である Object Storage ヘルパーを使用して、リストを含む小さなオブジェクトまたは大きなオブジェクトを格納できます。

ツールキットを追加するには、Microsoft.Toolkit.Uwp NuGet パッケージを UWP プロジェクトに追加します。

LocalObjectStorageHelper の例 (スニペット ソース)

var helper = new LocalObjectStorageHelper();

// Read simple objects
string keySimpleObject = "simple";
if (helper.KeyExists(keySimpleObject))
{
    string result = helper.Read<string>(keySimpleObject);
}

// Save simple objects
helper.Save(keySimpleObject, 47);

// Read complex/large objects 
string keyLargeObject = "large";
if (await helper.FileExistsAsync(keyLargeObject))
{
    var result = await helper.ReadFileAsync<MyLargeObject>(keyLargeObject);
}

// Save complex/large objects 
var o = new MyLargeObject
{
    ...
};
await helper.SaveFileAsync(keySimpleObject, o);

RoamingObjectStorageHelperでも同じことができます。

重要事項

Save(key, object)SaveFileAsync(key, object )を使用して、リストなどの単純なオブジェクトと複雑なオブジェクトの両方を保存できます。

保存すると、オブジェクトがローカル/ローミング設定に保存されます (選択したストレージ ヘルパーによって異なります)。これは、データの制約を受け、シリアル化されたオブジェクトの合計サイズが 8 KB 未満でなければならないことを意味します。

SaveFileAsyncは、オブジェクトをシリアル化されたファイルとしてアプリのLocalStateまたはRoamingStateディレクトリに保存し (少なくとも、私はそう信じています)、後で ReadFileAsync を使用してアクセスできるようにします。オブジェクトが非常に複雑で、8 KB を超えるサイズにシリアル化される可能性がある場合は、これを使用してください。

重要な警告

SaveFileAsyncを使用して大きな/複雑なオブジェクトまたはオブジェクトのリストを格納する場合は注意してください。各 UWP アプリには 100 KB のみが割り当てられます (別名 RoamingStorageQuota )。クォータを超えると、データの複製が停止します。

于 2016-11-02T01:36:20.187 に答える
2

ApplicationData.LocalSettingsには制限があることを忘れないでください。

各設定のサイズは最大 8K バイトです。

保存しようとしています

List<T> 

設定で。サポートされているタイプを見てみましょう

List<T> 

そこに欠けています。この方法ではできないようです。一部のみオブジェクト化されている場合があります

この同様のトピックの解決策を見てください: オブジェクトのリストをアプリケーション設定に保存する方法

アップデート:

BinaryFormatter を DataContractSerializer に置き換えてみてください。次の記事を参考にしてください:アプリ データの保存と読み込み (Windows ストア C# UWP / 8.1)

于 2016-04-10T11:35:12.737 に答える