繁体   English   中英

如何显示Windows Phone 8.1的传递信息

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM