用户单击BackButton时执行某些操作

时间:2015-12-17 16:06:56

标签: c# visual-studio-2015 uwp windows-10-mobile

我想在用户点击手机上的硬件按钮时执行某些操作。我有两页。在App.xaml.cs中,我添加了以下代码来处理页面之间的导航。

SystemNavigationManager.GetForCurrentView().BackRequested += OnBackRequested;

private void OnBackRequested(object sender, BackRequestedEventArgs e)
{
    if (this.Frame.CanGoBack)
        this.Frame.GoBack();
}

但是现在我想在用户单击后退按钮时执行其他操作。我怎么能这样做?

2 个答案:

答案 0 :(得分:0)

如果你的意思是"做某事"在返回之前运行方法,您可以使用Page导航方法

OnNavigatingFrom for"在页面被卸载之前立即调用,不再是父帧的当前源。"

OnNavigatinTo for"加载页面时调用并成为父框架的当前源。"

OnNavigatedFrom for"在页面被卸载后立即调用,不再是父帧的当前源。"

,例如

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    string productID;
    DataServiceContext svcContext = 
        new DataServiceContext(new Uri("AdventureWorks.svc", UriKind.Relative));

    if (this.NavigationContext.QueryString.ContainsKey("ProductId"))
    {
        productID = this.NavigationContext.QueryString["ProductId"];
    }
    else
    {
        productID = App.Current.Resources["FeaturedProductID"].ToString();
    }

    svcContext.BeginExecute<Product>(new Uri("Product(" + productID + ")", 
        UriKind.Relative), loadProductCallback, svcContext);

}

答案 1 :(得分:0)

如果您希望后退按钮在每个页面上执行不同的操作,则需要在每个页面上处理“后退”按钮 - 我这样做是为了提示用户确认在我的某个页面上丢失了更改。

在每个页面的OnNavigatedTo方法中订阅BackRequested事件:

protected override void OnNavigatedTo(Windows.UI.Xaml.Navigation.NavigationEventArgs e)
{
    SystemNavigationManager.GetForCurrentView().BackRequested += this.OnBackPressed;
    base.OnNavigatedTo(e);
}

并确保您在页面的OnNavigatedFrom方法中取消订阅:

protected override void OnNavigatingFrom(Windows.UI.Xaml.Navigation.NavigatingCancelEventArgs e)
{
    SystemNavigationManager.GetForCurrentView().BackRequested -= this.OnBackPressed;
    base.OnNavigatingFrom(e);
}

现在,您可以在每个页面上编写OnBackPressed()事件处理程序,以执行您希望它在该页面上执行的操作。