2013-04-25 76 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); 
} 
相关问题