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);
}
}
}