我想在用户点击手机上的硬件按钮时执行某些操作。我有两页。在App.xaml.cs中,我添加了以下代码来处理页面之间的导航。
SystemNavigationManager.GetForCurrentView().BackRequested += OnBackRequested;
private void OnBackRequested(object sender, BackRequestedEventArgs e)
{
if (this.Frame.CanGoBack)
this.Frame.GoBack();
}
但是现在我想在用户单击后退按钮时执行其他操作。我怎么能这样做?
答案 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()事件处理程序,以执行您希望它在该页面上执行的操作。