如何使用OnNavigatedFrom和OnNavigatedTo事件在页面之间传递数据

时间:2013-09-20 02:24:29

标签: c# windows-phone-7 windows-phone-8

我的申请表中有两页。导航遵循MainPage> EditPage>主页。 MainPage是起始页面,编辑页面可以是NavigatedTo,单击按钮并使用硬件后退按钮NavigatedFrom。如果在EditPage中发生某些操作,我想在用户希望返回MainPage时通知MainPage。我引用了http://mobile.dzone.com/articles/passing-values-between-windows,但我不确定如何相应地修复MainPage OnNavigatedTo事件。我所拥有的内容如下

MainPage.xaml.cs中

protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        //If action in EditPage occurred, determine that here
        ??
    }

EditPage.xaml.cs

protected override void OnNavigatedFrom(NavigationEventArgs e)
    {
        base.OnNavigatedFrom(e);

        //check to see if action occurred in EditPage, and if so, inform MainPage
        if (_wasEdited == true)
        {
            MainPage mp = e.Content as MainPage;
            if (mp != null)
                mp.Parameter = true;
        }
    }

2 个答案:

答案 0 :(得分:1)

您可以在App.xaml.cs

中拥有应用级别变量
public bool isThereAnyChange = false;

在您的EditPage.xaml.cs中,当您进行更改时,请更新'isThereAnyChange'。

private void updateChangeStatus()
{
    (App.Current as App).isThereAnyChange = true;
}

然后在MainPage.xaml.cs中查找上面的变量。

protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        //If action in EditPage occurred, determine that here
        if((App.Current as App).isThereAnyChange)
              //The change is there do accordingly here.
    }

答案 1 :(得分:0)

要在页面之间传递值,可以使用查询字符串或应用程序状态变量,就区分导航而言,只需检查一下NavigatedTo事件参数的e.URI属性,就是这样