c# - 如何将 List<object> 保存到 C# uwp 中的设置

标签 c# save win-universal-app settings listobject

如何将列表保存到 C# uwp 中的设置?

为对象定义类

//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; }
        }

为加载文件定义方法 方法:

//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;
}

结束行错误:(

如何在“设置”中保存列表? 请帮帮我。

最佳答案

UWP 社区工具包 - 对象存储

我知道自从最初的问题被问到已经半年多了,但我希望我能早点发现 UWP 工具包,因为我遇到过类似的情况,我想快速轻松地存储一个简单的类列表在漫游设置中漫游的设备信息。将其张贴在这里以防其他人在类似情况下使用它,例如 OP 和我自己。

如果您的应用程序以 Windows 10 Build 10586 或更高版本为目标,您可以使用属于 UWP Community Toolkit 的对象存储助手由 Microsoft 存储小型或大型对象,其中还包括列表。

您可以通过将 Microsoft.Toolkit.Uwp NuGet 包添加到您的 UWP 项目来添加该工具包。

LocalObjectStorageHelper 示例 ( Snippet Source )

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)。如果超过配额,数据复制将停止。

关于c# - 如何将 List<object> 保存到 C# uwp 中的设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36528638/

相关文章:

c# - 将通用 List<string> 绑定(bind)到 ComboBox

save - 如何在 Flutter 中一开始就加载主题

android - FileOutputStream 类型中的方法 write(byte[]) 不适用于参数 (Drawable)

c# - 在 UWP 中使用 DataTriggerBehavior 更改 ContentTemplate

c# - 使用包含字符串的参数进行断言

c# - 在 web.config 中包含数据库密码的潜在安全风险是什么

c# - 连接字符串中的 DataSource 参数产生 "Keyword not supported"

android - 在具有多个表的 Android Sqlite 数据库中保存数据时出现问题

c# - 如何使用 ListView /组合框 uwp 设置默认选定项

win-universal-app - 如何为通用 Windows 平台 (UWP) 应用程序创建 .appx 包?