如何在页面之间传递对象

时间:2013-10-24 08:55:01

标签: c# windows-phone-7

我有一个名为数据的对象。 它是以下给定类

的对象
[DataContract]
public class Details
{
    [DataMember(Name = "code")]
    public int Code { get; set; }

    [DataMember(Name = "message")]
    public string Message { get; set; }

    [DataMember(Name = "values")]
    public values values { get; set; }
}

其中values是另一个带变量的类。

现在我想将对象数据发送到另外一页。

NavigationService.Navigate(new Uri("/Folder/page2.xaml?object="+ data,UriKind.Relative));

我收到它如下所述

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
    {
        base.OnNavigatedTo(e);
        if (e.Uri.OriginalString.Contains("object"))
        {
            string data = NavigationContext.QueryString["object"];
            MessageBox.Show(data); 
        }
    }

但是在执行上述方法时,数据变量中的值stord是

Projectname.Foldername.Filename

我该怎么做才能传递对象的值?

2 个答案:

答案 0 :(得分:3)

尝试以下代码

PhoneApplicationService.Current.State["keyName"] = object;

并在page.xaml代码的另一端抓住它。

答案 1 :(得分:2)

我不认为在URI中传递复杂对象是个好主意。我的建议是使用以下代码扩展NavigationService类:

public static class NavigationExtensions
{

private static object _data= null;

public static void Navigate(this NavigationService service, string page, object data)
{
    _data = data;
    service.Navigate(new Uri(page, UriKind.Relative));
}

public static object GetLastNavigationData(this NavigationService service)
{
    object data = _data;
    _data = null;
    return data;
} }

您可以致电NavigationService.Navigate("/Folder/page2.xaml", data);进行导航 并var data= NavigationService.GetLastNavigationData()获取价值