2013-10-24 66 views
2

我有一個對象名爲數據。 它是下面給出類如何在頁面之間傳遞對象

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

的對象,其中值是與變量另一個類。

現在我想發送另一個頁面的對象數據。

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

不過,雖然excecuting上述方法中,在數據值斯圖爾變量是

Projectname.Foldername.Filename 

如所提到的我應該做的傳遞與它的值的對象

回答

1

我不認爲在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()獲得價值

2

試試下面的代碼

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

,趕上它在page.xaml代碼的另一面。

+0

我到什麼地方使用它?在導航的同時或在其他網頁上recieving? ? 你能說清楚@阿魯爾嗎? – Aju

+0

將數據保存在源頁面中: - PhoneApplicationService.Current.State [「SearchResultList」] = resultData; 檢索目的地頁面: - List loadedResultData =(List )PhoneApplicationService.Current.State [「SearchResultList」]; –