【问题标题】:Windows Phone 7 passing values between pages [duplicate]Windows Phone 7在页面之间传递值[重复]
【发布时间】:2013-02-05 02:58:31
【问题描述】:

可能重复:
How to pass the image value in one xaml page to another xaml page in windows phone 7?
Passing data from page to page

我认为不是重复的,因为我没有找到我的问题的答案,我没有传递图像,我在 Page2 中传递了 2darray[3,3] 值。 我正在开发一个 Windows Phone 7 应用程序。我有两个页面(主页和第 2 页)。我在主页上写了代码。我有一个带有值的二维数组。如何在 page2 中使用此数组?请给出一步一步的答案,我是初学者。

【问题讨论】:

标签: c# windows-phone-7


【解决方案1】:

您可以使用 JSON 来序列化您的数组。你可以像我一样使用JSON.net。请记住,您不能将每个字符串都传递给您的 Uri - 如果它包含像 '&' 这样的字符,您的应用程序将会崩溃。这就是您必须使用 Uri.UnescapeDataString 的原因。

这是一个二维字符串数组的例子。如果您需要传递复杂的对象,仍然可以使用 JSON.net(请参阅文档)。请记住在序列化后使用 Uri.UnescapeDataString

您从 JSON 反序列化您的数组之前,您必须取消转义它 (Uri.UnescapeDataString)。

在您的源页面中:

using System;
using System.Net;
using System.Windows;
using Microsoft.Phone.Controls;
using Newtonsoft.Json;

namespace PhoneApp2
{
    public static class Extensions
    {

        public static string GetHtmlDecoded(this string str)
        {
            return HttpUtility.HtmlDecode(str);
        }

        public static string GetHtmlEncoded(this string str)
        {
            return HttpUtility.HtmlEncode(str);
        }

    }

    public partial class MainPage : PhoneApplicationPage
    {
        // Constructor
        public MainPage()
        {
            InitializeComponent();
        }


        private void button1_Click(object sender, RoutedEventArgs e)
        {


            var arrStr = new[,]
                {
                    {"aaaa$ffeaw&fewa=324&fewa", "fewa"},
                    {"aafw&fewa=324&fewa", "fefewa"},
                };


            string param = JsonConvert.SerializeObject(arrStr);
            param = Uri.EscapeDataString( param);

            var destination = new Uri("/Page1.xaml?arr=" + param, UriKind.Relative);
            NavigationService.Navigate(destination );
        }
    }
}

在目标页面中:

using System;
using Microsoft.Phone.Controls;
using Newtonsoft.Json;

namespace PhoneApp2
{
    public partial class Page1 : PhoneApplicationPage
    {
        public Page1()
        {
            InitializeComponent();
        }

        protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
        {
            base.OnNavigatedTo(e);
            var param = Uri.UnescapeDataString(NavigationContext.QueryString["arr"]);
            var arr = JsonConvert.DeserializeObject<string[,]>(param);
        }
    }
}

【讨论】:

  • -1 表示语法错误,甚至没有解决将二维数组序列化为查询字符串参数的问题。
  • @MikeChristensen 你说得对,我有点乱。我修好了它。 :)
  • @user2040397 顺便说一句,引用 JSON.net 和许多其他库的最简单方法是通过 Nuget。如果以前没有使用过,请阅读它。
  • 我安装了 Json 包。我写的。但我不知道如何在目标页面中使用我的数组。我的数组名称:racs[3,3],它是一个字符串。所以我想要这样的例子:目标页面中的 TextBox.Text = racs[1,2]。
  • @user2040397 您不能调用 TextBox 类的 Text 属性。你必须在你的对象上调用它。像这样: myTextBox.Text=racs[1,2];评论不是此讨论的正确位置。我建议您阅读有关 windows phone 的教程,如果仍有不清楚的地方,请提出另一个问题。
【解决方案2】:

我还不熟悉 Windows Phone 7,但我想可以在 Page2 上声明一个公共属性并在创建后用数组填充它。

【讨论】:

  • 可以一步一步写吗?谢谢。
猜你喜欢
  • 1970-01-01
  • 2013-07-05
  • 2014-09-16
  • 2016-07-24
  • 1970-01-01
  • 1970-01-01
  • 2013-12-12
  • 1970-01-01
相关资源
最近更新 更多