首页 文章

Windows Phone 7在页面之间传递值[重复]

提问于
浏览
0

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

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

2 回答

  • 0

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

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

    Before 你从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

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

相关问题