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 社区工具包中的对象存储帮助程序来存储小型或大型对象,其中还包括列表。

可以通过将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)保存简单和复杂的对象,例如列表。

Save会将对象存储在本地/漫游设置中(取决于您选择的存储助手);这意味着它受数据约束,并且序列化对象的总大小必须小于 8 KB。

SaveFileAsync会将对象作为序列化文件存储在应用程序的LocalStateRoamingState目录中(至少,我相信如此),以便稍后使用 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 Store C# UWP / 8.1)

于 2016-04-10T11:35:12.737 回答
0

您不应该将整个文件和位图图像存储到设置中。这不是应用程序设置功能的正确使用。最多,您可以存储文件列表及其路径,这可以让您在运行时读取内容并显示缩略图。如果您准确地提到了您想要实现的目标,那么也许我们可以为您提供更好的帮助。

如果您绝对需要在应用程序中存储整个文件,您可以将这些文件复制到应用程序的本地存储文件夹中,也可以考虑与 OneDrive 集成以获得更便携的解决方案。

于 2017-08-14T07:45:33.580 回答