处理不同页面上的后退按钮
Handling back button on different pages
我有 2 个页面,MainPage 和 SettingsPage。在 MainPage 中有一个按钮,单击它可以使用以下代码进入 SettingsPage:
Frame.Navigate(typeof(SettingsPage));
现在我希望在第二页上当用户单击后退按钮时应用程序返回到 MainPage。
我尝试添加以下代码:
public SettingsPage()
{
this.InitializeComponent();
SystemNavigationManager.GetForCurrentView().BackRequested += SettingsPage_BackRequested;
}
private void SettingsPage_BackRequested(object sender, BackRequestedEventArgs e)
{
if (this.Frame.CanGoBack)
{
this.Frame.GoBack();
}
e.Handled = true;
}
应用程序返回到 MainPage,但 SettingsPage_BackRequested 事件继续工作,所以如果我单击 MainPage 上的后退按钮,应用程序不会关闭。
如何处理应用程序中的后退按钮?
我建议您将导航代码移至 App 对象。 SystemNavigationManager 的好消息是您可以集中您的代码并使默认导航过程非常容易完成。
这是一个简化版本
protected override void OnLaunched(LaunchActivatedEventArgs e)
{
...
rootFrame.Navigated += OnNavigated;
SystemNavigationManager.GetForCurrentView().BackRequested += OnBackRequested;
...
}
private void OnNavigated(object sender, NavigationEventArgs e)
{
SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility =
((Frame)sender).CanGoBack ?
AppViewBackButtonVisibility.Visible :
AppViewBackButtonVisibility.Collapsed;
}
private void OnBackRequested(object sender, BackRequestedEventArgs e)
{
Frame rootFrame = Window.Current.Content as Frame;
if (rootFrame.CanGoBack)
{
e.Handled = true;
rootFrame.GoBack();
}
}
有关更多详细信息,请查看这个很棒的教程
http://www.wintellect.com/devcenter/jprosise/handling-the-back-button-in-windows-10-uwp-apps
我有 2 个页面,MainPage 和 SettingsPage。在 MainPage 中有一个按钮,单击它可以使用以下代码进入 SettingsPage:
Frame.Navigate(typeof(SettingsPage));
现在我希望在第二页上当用户单击后退按钮时应用程序返回到 MainPage。
我尝试添加以下代码:
public SettingsPage()
{
this.InitializeComponent();
SystemNavigationManager.GetForCurrentView().BackRequested += SettingsPage_BackRequested;
}
private void SettingsPage_BackRequested(object sender, BackRequestedEventArgs e)
{
if (this.Frame.CanGoBack)
{
this.Frame.GoBack();
}
e.Handled = true;
}
应用程序返回到 MainPage,但 SettingsPage_BackRequested 事件继续工作,所以如果我单击 MainPage 上的后退按钮,应用程序不会关闭。
如何处理应用程序中的后退按钮?
我建议您将导航代码移至 App 对象。 SystemNavigationManager 的好消息是您可以集中您的代码并使默认导航过程非常容易完成。 这是一个简化版本
protected override void OnLaunched(LaunchActivatedEventArgs e)
{
...
rootFrame.Navigated += OnNavigated;
SystemNavigationManager.GetForCurrentView().BackRequested += OnBackRequested;
...
}
private void OnNavigated(object sender, NavigationEventArgs e)
{
SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility =
((Frame)sender).CanGoBack ?
AppViewBackButtonVisibility.Visible :
AppViewBackButtonVisibility.Collapsed;
}
private void OnBackRequested(object sender, BackRequestedEventArgs e)
{
Frame rootFrame = Window.Current.Content as Frame;
if (rootFrame.CanGoBack)
{
e.Handled = true;
rootFrame.GoBack();
}
}
有关更多详细信息,请查看这个很棒的教程
http://www.wintellect.com/devcenter/jprosise/handling-the-back-button-in-windows-10-uwp-apps