我想从我的应用程序中的MainPage的子页面传递数据。从我可以看出的问题是,有一个启动加载屏幕导航到MainPage,我想编写一个“如果从子页面导航”块以包含在OnNavigatedTo中。
这是我的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 :(得分:1)
我发现通过将数据传递到Windows 8 Apps的另一个页面,您无法按照使用方式返回数据。您无法以传递方式返回数据,即 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);
}