C# 返回Windows Phone时将数据传递回上一页的最佳方法

C# 返回Windows Phone时将数据传递回上一页的最佳方法,c#,windows-phone-7,navigation,C#,Windows Phone 7,Navigation,在Windows Phone中单击“上一步”按钮时,将数据传递回上一页的最佳方法是什么。 我想做的是,当用户从我的一个子页面返回主页面时,如果我在子页面中保存了一些内容,主页面应该刷新de数据。 当我前进很简单时,我只使用querystring m,但当我后退时我不知道该怎么做。 我试过这个: private void PhoneApplicationPage_BackKeyPress(object sender, System.ComponentModel.CancelEventArgs e)

在Windows Phone中单击“上一步”按钮时,将数据传递回上一页的最佳方法是什么。 我想做的是,当用户从我的一个子页面返回主页面时,如果我在子页面中保存了一些内容,主页面应该刷新de数据。 当我前进很简单时,我只使用querystring m,但当我后退时我不知道该怎么做。 我试过这个:

private void PhoneApplicationPage_BackKeyPress(object sender, System.ComponentModel.CancelEventArgs e)
{
    e.Cancel = true;
    NavigationContext.QueryString.Add("test", "test");
}
然后,在主页上,我尝试这样做:

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
    if (e.NavigationMode == System.Windows.Navigation.NavigationMode.Back)
    {
        if (NavigationContext.QueryString.ContainsKey("test"))
        {
            MessageBox.Show(NavigationContext.QueryString["test"]);
        }
    }
}
我这样做只是为了测试,但我运气不好,我在互联网上搜索了答案,但没有找到令人满意的答案。 我想在App.xaml.cs中放一个名为Pending的字典,在那里我会保存在某些点上应该处理的数据,然后,如果我回到主页,并且在这个字典中有数据,我会刷新ui。 这是个好主意吗


谢谢大家!

我的建议是,如果您遵循MVVM体系结构,请在子页面的视图模型中设置一个属性,然后在父页面上访问它。我希望它能帮助您

在第一种情况下,什么不起作用?会发生什么?应用程序没有导航回?或者NavigationContext.QueryString不包含“测试”键?QueryString不包含测试键…我正在使用MVVM。但是我需要保持子视图模型的实例化,如何访问子视图模型的页面。如果子页面不是这个页面,我必须处理…在应用程序设置中,您可以创建viewmodel的实例,并在所有视图的代码中使用它。这样,您将只需要为所有视图维护一个viewmodel。因此,在父页面和子页面上都可以访问相同的属性。我希望这会有所帮助,但如果您还有任何疑问,请告诉我。