0

重複の可能性:
ある xaml ページの画像値を Windows Phone 7 の別の xaml ページに渡す方法は?
ページからページへのデータの受け渡し

質問に対する答えが見つからないため、重複していないと思います。画像を渡さず、Page2 で 2darray[3,3] の値を渡します。Windows Phone 7 アプリを開発しています。2 つのページ (mainpage と page2) があります。メインページにコードを書きました。値を持つ 2D 配列があります。この配列を page2 で使用するにはどうすればよいですか? 初心者なので丁寧に答えてください。

4

2 に答える 2

2

JSON を使用して配列をシリアル化できます。私のようにJSON.netを使用できます。すべての文字列を Uri に渡すことはできないことに注意してください。 「&」などの文字が含まれていると、アプリがクラッシュします。そのため、Uri.UnescapeDataStringを使用する必要があります。

これは 2D 文字列配列の例です。複雑なオブジェクトを渡す必要がある場合でも、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 に答える