0

可能重复:
如何将一个 xaml 页面中的图像值传递到 windows phone 7 中的另一个 xaml 页面?
在页面之间传递数据

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

4

2 回答 2

2

您可以使用 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);
        }
    }
}
于 2013-02-04T17:39:13.193 回答
0

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

于 2013-02-04T17:25:01.763 回答