可能重复:
How to pass the image value in one xaml page to another xaml page in windows phone 7?
Passing data from page to page
我认为不是重复,因为我没有找到我的问题的答案,我没有传递图像,我在Page2中传递2darray [3,3]值。 我正在开发一个Windows Phone 7应用程序。我有两个页面(主页和第2页)。我在主页上写了代码。我有一个带有值的2D数组。我怎样才能在page2中使用这个数组?请一步一步回答,我是初学者。
答案 0 :(得分:1)
您可以使用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);
}
}
}
答案 1 :(得分:0)
我还不熟悉Windows Phone 7,但我想可以在Page2上声明一个公共属性,并在创建后用数组填充它。