如何处理 UWP 按下的后退按钮

Hai*_* Cu 5 windows-10 windows-10-mobile

我曾经在 Windows Phone 8.1 XAML 中使用硬件按钮 API。但是,在 UWP 中,某些设备没有后退按钮。如何适应新的应用模式?

Vin*_*ary 5

稍微解释一下答案。 您可以使用命名空间的SystemNavigationManagerWindows.UI.Core

对于单页


如果您只想处理单页导航。请按照以下步骤操作

步骤1。使用命名空间Windows.UI.Core

using Windows.UI.Core;
Run Code Online (Sandbox Code Playgroud)

步骤2.注册当前视图的返回请求事件。最好的地方是 after 类的主构造函数InitializeComponent()

public MainPage()
{
    this.InitializeComponent();
    //register back request event for current view
    SystemNavigationManager.GetForCurrentView().BackRequested += MainPage_BackRequested;
}
Run Code Online (Sandbox Code Playgroud)

步骤 3.处理 BackRequested 事件

private void Food_BackRequested(object sender, BackRequestedEventArgs e)
{
    if (Frame.CanGoBack)
    {
        Frame.GoBack();
        e.Handled = true;
    }
}
Run Code Online (Sandbox Code Playgroud)

单一地点完成申请rootFrame


处理所有视图的所有后退按钮的最佳位置是App.xaml.cs

步骤1。使用命名空间Windows.UI.Core

using Windows.UI.Core;
Run Code Online (Sandbox Code Playgroud)

步骤2.注册当前视图的返回请求事件。最好的地方就OnLaunched在之前Window.Current.Activate

protected override void OnLaunched(LaunchActivatedEventArgs e)
{
    ...
    SystemNavigationManager.GetForCurrentView().BackRequested += OnBackRequested;
    Window.Current.Activate();
}
    
Run Code Online (Sandbox Code Playgroud)

步骤 3.处理 BackRequested 事件

private void OnBackRequested(object sender, BackRequestedEventArgs e)
{
    Frame rootFrame = Window.Current.Content as Frame;
    if (rootFrame.CanGoBack)
    {
        rootFrame.GoBack();
        e.Handled = true;
    }
}
Run Code Online (Sandbox Code Playgroud)

参考 -在 UWP 中按下后退按钮的处理

希望这对某人有帮助!


tha*_*199 3

您可以使用 BackRequested 事件来处理返回请求:

SystemNavigationManager.GetForCurrentView().BackRequested += OnBackRequested;

if (App.MasterFrame.CanGoBack)
{
    rootFrame.GoBack();
    e.Handled = true;
}
Run Code Online (Sandbox Code Playgroud)