[英]How to display passed information for Windows Phone 8.1
我正在尝试为Windows Phone 8.1开发一个应用程序。 我是应用程序开发人员的完整初学者。 现在,我的问题是-如何显示文本框或某种形式的另一页中传递的信息。 它是一个购物应用程序,我正在尝试获取单击按钮的商品名称,该名称是一个按钮,出现在“购物篮”页面中。 代码如下。 因此,当选择Menu.xaml中的按钮时,Menu.xaml中的项目就会显示在Basket.xaml中。
篮筐
protected override void OnNavigatedTo(NavigationEventArgs e)
{
Menu.PassedData data = e.Parameter as Menu.PassedData;
}
例如,假设我在Basket.xaml中有一个txt框,旨在显示Menu.xaml中选择的项目,我该如何去做?
如果您要传递的数据是原始类型,则可以像您一样传递。 如果不是原始数据,则可以存储在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());
}
有关更多信息,请参考此链接
在第二页(第一页,如果我理解正确的话),您应该可以访问传递的数据,非常简单:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
var passedData = e.Parameter as PassedData; //cast the object back to PassedData type.
someTextBlockOnBasket.Text = passedData.Name;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.