我正在尝试为windows phone 8.1开发一个应用程序。我完全是应用程序开发的初学者。现在我的问题是-我如何在文本框或其他类型的页面中显示在另一个页面中传递的信息。这是一个购物应用程序,我正在尝试获取商品的名称,它是一个按钮,当点击购物篮时会出现在购物篮页面中。代码如下。因此,当选择Menu.xaml中的按钮时,Menu.xall中的Item会显示在Basket.xaml中。
篮状Xaml
protected override void OnNavigatedTo(NavigationEventArgs e)
{
Menu.PassedData data = e.Parameter as Menu.PassedData;
}
举个例子,我在Basket.xaml中有一个txt框,它旨在显示在Menu.xaml中选择的项目。我该怎么做?
在第二页(如果我理解正确的话,是篮子里的一页)中,你应该能够访问传递的数据,非常容易:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
var passedData = e.Parameter as PassedData; //cast the object back to PassedData type.
someTextBlockOnBasket.Text = passedData.Name;
}
如果要传递的数据是基元类型,则可以像以前那样传递。如果不是基元数据您可以在LocalSettings中存储。要做到这一点,您必须将类序列化为Json,xml
LocalSettings.Values[key]=Json Converter.Serialize(object)
但LocalSettings有一些大小限制,如果要传递的数据很大,您可以序列化并存储到文件中,然后在下一页中使用它
这里是我们序列化和反序列化的代码
MemoryStream sessionData = new MemoryStream();
DataContractSerializer serializer = new
DataContractSerializer(typeof(Menu.PassedData;
));
serializer.WriteObject(sessionData, data);
StorageFile file = await ApplicationData.Current.LocalFolder
.CreateFileAsync(sFileName);
using (Stream fileStream = await file.OpenStreamForWriteAsync())
{
sessionData.Seek(0, SeekOrigin.Begin);
await sessionData.CopyToAsync(fileStream);
await fileStream.FlushAsync();
}
Deserialize back this way -
StorageFile file = await ApplicationData.Current.LocalFolder.
GetFileAsync(sFileName);
using (IInputStream inStream = await file.OpenSequentialReadAsync())
{
DataContractSerializer serializer =
new DataContractSerializer(typeof(Menu.PassedData;
));
var data = (Menu.PassedData;
)serializer
.ReadObject(inStream.AsStreamForRead());
}
有关更多信息,请参阅此链接