Windows Phone 7在页面之间传递值

本文关键字:之间 Phone Windows | 更新日期: 2023-09-27 17:57:50

可能重复:
如何在windowsphone 7中将一个xaml页面中的图像值传递给另一个xaml-页面
将数据从一页传递到另一页

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

Windows Phone 7在页面之间传递值

您可以使用JSON序列化您的数组。你可以像我一样使用JSON.net。请记住,如果每个字符串都包含"&"之类的字符,则不能将其传递给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);
        }
    }
}

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