我有一个简单的应用程序,带有一个简单的可观察集合。用户可以通过单击“添加”按钮手动将项目添加到列表中,并为其指定名称和其他一些相关属性。
我正在尝试存储这些属性,例如,当应用程序终止或用户导航到另一个页面时,假设用户现在添加名为“Sample”的新项目。重置集合时没有任何项目。那么,当应用加载或导航到该页面时,存储每个项目的价值然后将其恢复的最佳方法是什么。
注意:用户有权根据需要添加任意数量的项目,每个项目总共有8个(可能会有所不同)不同的属性。
答案 0 :(得分:0)
将您的数据存储在数据库中 或本地文件(xml - json ..甚至txt文件)。 然后根据需要加载和更新数据。
推荐
使用sql server数据库存储数据
答案 1 :(得分:0)
ObservableCollection
以下是示例代码
var helper = new LocalObjectStorageHelper();
// Save objects
var o = new MyLargeObject
{
...
};
await helper.SaveFileAsync(keySimpleObject, o);
// Read objects
string keyLargeObject = "large";
if (await helper.FileExistsAsync(keyLargeObject))
{
var result = await helper.ReadFileAsync<MyLargeObject>(keyLargeObject);
}
答案 2 :(得分:0)
这里有2个问题。
当用户从当前视图导航到不同视图时,ObservableCollection
。要处理此问题,您可以全局初始化ObservableCollection
一次,而不是在您使用它的页面中。可能在App.xaml.cs
因此,如果您使用的是ObservableCollection<string>
,请在App.xaml.cs中将此初始化添加为
public ObservableCollection<string> GlobalList {get; set;} = new ObservableCollectin<string>;
现在,在任何视图中,您都可以像App
一样使用App.GlobalList
引用来执行添加,删除以及您要使用的其他功能。
ObservableCollection
。我强烈推荐Newtonsoft.Json。简单,简单,快速和轻量级的Json Parser将您的ObservableCollection转换为Json并返回。
您可以将ObservableCollection
转换为json
字符串,如下所示。
string jsonData = JsonConvert.SerializeObject(App.GlobalList);
您可以将json
转换为ObservableCollection
,如下所示。
App.GlobalList = JsonConvert.DeserializeObject<ObservableCollection<string>>(jsonData);
您可以使用以下方法保存和检索数据。 (GIST)
public async void SaveList(string FileName, string StringValue)
{
StorageFolder storageFolder = ApplicationData.Current.LocalFolder;
StorageFile sampleFile = (File.Exists(Path.Combine(storageFolder.Path,FileName))) ?
await storageFolder.GetFileAsync(FileName)
:await storageFolder.CreateFileAsync(FileName, CreationCollisionOption.ReplaceExisting);
await FileIO.WriteTextAsync(sampleFile, StringValue);
}
public async Task<string> RetrieveList(string FileName)
{
StorageFolder storageFolder = ApplicationData.Current.LocalFolder;
StorageFile sampleFile = (File.Exists(Path.Combine(storageFolder.Path,FileName))) ?
await storageFolder.GetFileAsync(FileName)
: await storageFolder.CreateFileAsync(FileName, CreationCollisionOption.ReplaceExisting);
return await FileIO.ReadTextAsync(sampleFile);
}
所以要保存你的json,你需要调用
SaveList("GlobalList.txt", jsonData);
并检索您需要致电
string jsonData = await RetrieveList("GlobalList.txt");
此项目的完整回购可用Here
祝你好运。