2013-04-25 81 views
0

我想從我的應用程序中的MainPage的子頁面傳遞數據。這個問題,從我可以告訴的是,有一個閃加載屏幕導航到該和的MainPage我想寫一個「如果從子頁面導航」塊中的OnNavigatedTo包括。Windows 8的應用程序 - 將數據傳遞給炫魅

這裏是我的MainPage.xaml.cs中的代碼:

protected override void OnNavigatedTo(NavigationEventArgs args) 
    { 
     if (base.OnNavigatedFrom(args) = ChildPage) 
     { 
     // Code for: If navigated from child page 
      ReturnData returnData = args.Parameter as ReturnData; 
      this.myNewString = returnData.myString; 
     } 
     base.OnNavigatedTo(args); 
    } 
+0

我想通了,會後我的答案。 – 2013-04-25 18:13:30

回答

1

我發現,你不能返回的數據是使用將數據傳遞到另一個頁面的Windows 8應用程序的方式。你不能返回數據,他們的方式傳遞給它即this.Frame.Navigate(typeof運算(的MainPage),passData);

對於該解決方案,我創建了一個「已完成」事件和並把它稱爲從後面的MainPage C#代碼。

MainPage.xaml.cs中

protected override void OnNavigatedFrom(NavigationEventArgs args) 
    { 
     if (args.SourcePageType.Equals(typeof(ChildPage))) 
      (args.Content as ChildPage).Completed += OnChildPageCompleted; 
     base.OnNavigatedFrom(args); 
    } 

    void OnChildPageCompleted(object sender, ReturnData args) 
    { 
     // Code to run if returned back to MainPage from ChildPage 
     this.myNewString = returnData.myString; 
     (sender as ChildPage).Completed -= OnChildPageCompleted; 
    } 

ReturnData.cs

namespace MyTestApp 
{ 
    class ReturnData 
    { 
     public String myString { set; get; } 
    } 
} 

ChildPage.xaml.cs

public event EventHandler<ReturnData> Completed; 

個ChildPage.xaml.cs

protected override void OnNavigatedFrom(NavigationEventArgs args) 
{ 
    if (Completed != null) 
    { 

     // Create ReturnData object 
     ReturnData returnData = new ReturnData(); 

     returnData.myString = newStringChanged; 

     // Fire Completed event 
     Completed(this, returnData); 
    } 

    base.OnNavigatedFrom(args); 
} 
相關問題