我有一个Add.xaml文件 在里面,我有我的食谱类,它将我的食谱对象存储在名为breakfastRecipe
的列表中然后我将list beakfastRecipe存储在breakfast.json文件中。 (使用我在其他成员处找到的反序列化/序列化方法)
我有几个文本框,我写了名称+成分然后我使用一个激活json序列化程序的保存按钮。我使用测试方法来测试解串器,如果一切正常并且确实如此。 在add.xaml页面上,对象列表的保存和加载工作正常
我有另一个页面breakfastList.xaml,我想使用longlistselector用我的所有食谱填充我的页面。问题是我不知道如何访问在另一页上创建的breakfast.json文件。
我使用相同的get / deserializer来加载我的数据
public async void btnGet_Tap()
{
StorageFolder localFolder = ApplicationData.Current.LocalFolder;
try
{
// Getting JSON from file if it exists, or file not found exception if it does not
StorageFile textFile = await localFolder.GetFileAsync("breakfastList.json");
using (IRandomAccessStream textStream = await textFile.OpenReadAsync())
{
// Read text stream
using (DataReader textReader = new DataReader(textStream))
{
//get size
uint textLength = (uint)textStream.Size;
await textReader.LoadAsync(textLength);
// read it
string jsonContents = textReader.ReadString(textLength);
// deserialize back to our products!
//I only had to change this following line in this function
breakfastRecipe = JsonConvert.DeserializeObject<IList<Recipe>>(jsonContents) as List<Recipe>;
// and show it
//displayProduct();
}
}
}
catch (Exception ex)
{
tester.Text = "error";
}
}
当我在构造函数中写
时breakfastRecipe = new List(); btnGet_Tap();
在我看来,我正在创建一个新列表,然后btnGet从我的add.xaml创建的.json文件中加载数据但是它没有工作......
我的问题是如何访问我的&#34;第二页&#34;它存储在由我的第一页
创建的.json文件中答案 0 :(得分:0)
尝试将btnGet_Tap代码移动到异步函数中,该函数返回任务,然后在btnGet_Tap()方法中等待。然后你可以打电话
Foo().Wait();
如果您希望在构造函数中调用时等待。
public async void btnGet_Tap()
{
await Foo();
}
public async Task Foo()
{
StorageFolder localFolder = ApplicationData.Current.LocalFolder;
try
{
// Getting JSON from file if it exists, or file not found exception if it does not
StorageFile textFile = await localFolder.GetFileAsync("breakfastList.json");
using (IRandomAccessStream textStream = await textFile.OpenReadAsync())
{
// Read text stream
using (DataReader textReader = new DataReader(textStream))
{
//get size
uint textLength = (uint)textStream.Size;
await textReader.LoadAsync(textLength);
// read it
string jsonContents = textReader.ReadString(textLength);
// deserialize back to our products!
//I only had to change this following line in this function
breakfastRecipe = JsonConvert.DeserializeObject<IList<Recipe>>(jsonContents) as List<Recipe>;
// and show it
//displayProduct();
}
}
}
catch (Exception ex)
{
tester.Text = "error";
}
}