【问题标题】:How to display passed information for Windows Phone 8.1如何显示 Windows Phone 8.1 的传递信息
【发布时间】:2016-04-08 11:05:30
【问题描述】:

我正在尝试为 windows phone 8.1 开发应用程序。我是应用程序开发的初学者。现在我的问题是 - 我怎样才能在文本框或某种形式的另一个页面中显示传递的信息。它是一个购物应用程序,我正在尝试获取作为按钮的项目名称,当单击购物篮时,它会出现在购物篮页面中。代码如下。所以即来自Menu.xaml的项目。在Basket.xaml中显示在菜单中的按钮时选择。

Basket.Xaml

  protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        Menu.PassedData data = e.Parameter as Menu.PassedData;

    }

比如说,我在 Basket.xaml 中有一个 txt 框,旨在显示在 Menu.xaml 中选择的项目,我该怎么做呢?

【问题讨论】:

    标签: c# xaml navigation visual-studio-2015 windows-phone-8.1


    【解决方案1】:

    在第二页(篮子一,如果我理解正确的话),您应该能够访问传递的数据,非常简单:

    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        var passedData = e.Parameter as PassedData; //cast the object back to PassedData type.
        someTextBlockOnBasket.Text = passedData.Name;
    
    }
    

    【讨论】:

      【解决方案2】:

      如果您要传递的数据是原始类型,您可以像以前一样传递。 如果不是原始数据 您可以存储在 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());
      }
      

      更多信息请参考link

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多