C# Windows Phone 7在页面之间传递值

C# Windows Phone 7在页面之间传递值,c#,windows-phone-7,C#,Windows Phone 7,可能重复: 我认为这不是重复的,因为我没有找到我问题的答案,我没有传递图像,我在第2页传递2darray[3,3]值。 我正在开发一个WindowsPhone7应用程序。我有两页(主页和第2页)。我在主页上写了代码。我有一个带值的二维数组。如何在第2页中使用此数组?请逐步回答,我是初学者。我还不熟悉Windows Phone 7,但我认为可以在第2页声明一个公共属性,并在创建后用数组填充它。您可以使用JSON序列化数组。你可以像我一样使用。请记住,您不能将每个字符串都传递给您的Uri-如果

可能重复:

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

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

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

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

从JSON反序列化数组之前,必须对其进行unescape(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);
        }
    }
}
使用系统;
使用Microsoft.Phone.Controls;
使用Newtonsoft.Json;
名称空间PhoneApp2
{
公共部分类第1页:PhoneApplicationPage
{
公共页1()
{
初始化组件();
}
受保护的覆盖无效OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
基地。导航到(e);
var param=Uri.UnescapeDataString(NavigationContext.QueryString[“arr”]);
var arr=JsonConvert.DeserializeObject(参数);
}
}
}

这已经被问了很多次:
-1
语法错误,甚至没有解决将2D数组序列化为查询字符串参数的问题。@MikeChristensen你说得对,我有点混乱。我把它修好了@user2040397顺便说一句,引用JSON.net和许多其他库的最简单方法是通过Nuget。如果以前没有使用过,请阅读。我安装了Json包。我写的。但我不知道如何在目标页面中使用我的数组。我的数组名:racs[3,3],它是一个字符串。所以我想要的示例是:目标页面中的TextBox.Text=racs[1,2]。@user2040397您不能调用TextBox类的Text属性。你必须在你的对象上调用它。比如:myTextBox.Text=racs[1,2];评论不是讨论这个问题的合适地方。我建议你读一本关于windows phone的教程,如果还有什么不清楚的地方,可以问另一个问题。你能一步一步地写吗?谢谢