如何将List保存到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; }
}
define方法对于loadfile 方法:
//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;
}
结束行错误:(
如何在设置中保存列表? 请帮帮我。
答案 0 :(得分:2)
不要忘记ApplicationData.LocalSettings有限制。
每个设置的大小最多为8K字节。
您正试图存储
List<T>
在设置中。 看看支持的types
List<T>
那里缺少。看起来你不能这样做。可能只有一些转换为对象
看看这个类似主题的解决方案: How to store a list of objects in application settings
更新:
您可以尝试使用DataContractSerializer替换BinaryFormatter。 这篇文章可能会对您有所帮助:Saving and Loading App Data (Windows Store C# UWP / 8.1)
答案 1 :(得分:2)
我知道这问题已经过半年了,但是我希望我早点发现UWP工具包,因为我有类似的情况,我想快速轻松地存储一个简单的类列表设备信息在漫游设置中漫游。在这里发布这个以防它可能用于类似OP和我自己的其他人。
如果您的应用程序面向Windows 10 Build 10586或更高版本,则可以使用属于Microsoft UWP Community Toolkit的对象存储帮助程序来存储小型或大型对象,其中还包括列表。
您可以通过将 Microsoft.Toolkit.Uwp NuGet包添加到您的UWP项目来添加该工具包。
return (Iterator<z>) this.myHashmap.keySet().iterator();
可以使用 RoamingObjectStorageHelper 完成相同的操作。
您可以使用保存(键,对象)和 SaveFileAsync(键,对象)保存简单和复杂对象,例如列表。
保存会将对象存储在本地/漫游设置中(具体取决于您选择的存储助手);这意味着它受数据约束,并且序列化对象的总大小必须小于8 KB。
SaveFileAsync 会将对象存储为应用的 LocalState 或 RoamingState 目录中的序列化文件(至少我相信如此)稍后使用ReadFileAsync访问。如果您的对象非常复杂并且您希望序列化为大于8 KB的大小,请使用此方法。
使用 SaveFileAsync 存储大型/复杂对象或对象列表时要小心。每个UWP应用程序仅分配100 KB(AKA RoamingStorageQuota)。如果超出配额,数据复制将停止。
答案 2 :(得分:0)
您不应将整个文件和位图图像存储到设置中。这不是正确使用应用程序的设置功能。最多,您可以存储文件列表及其路径,这可以允许您在运行时读取内容并显示缩略图。如果你已经提到了你想要实现的目标,那么也许我们可以帮助你做得更好。
如果您绝对需要在应用中存储整个文件,可以copy those files into your app's local storage folder或者可以查看integrating with OneDrive以获得更便携的解决方案。