我以前在Windows Phone 8.1 XAML中使用硬件按钮API。但是,在UWP中,有些设备没有后退按钮。我如何适应新的应用模式?
答案 0 :(得分:3)
有点解释答案。
您可以使用Windows.UI.Core
Windows.UI.Core
命名空间
如果您只想处理单页导航。请按照以下步骤进行操作
第1步。使用名称空间using Windows.UI.Core;
InitializeComponent()
第2步。注册当前视图的请求事件。最好的地方是public MainPage()
{
this.InitializeComponent();
//register back request event for current view
SystemNavigationManager.GetForCurrentView().BackRequested += MainPage_BackRequested;
}
之后的类的主要构造函数。
private void Food_BackRequested(object sender, BackRequestedEventArgs e)
{
if (Frame.CanGoBack)
{
Frame.GoBack();
e.Handled = true;
}
}
第3步。处理BackRequested事件
rootFrame
App.xaml.cs
处理所有视图的所有后退按钮的最佳位置是Windows.UI.Core
第1步。使用名称空间using Windows.UI.Core;
OnLaunched
第2步。注册当前视图的请求事件。最好的地方是Window.Current.Activate
protected override void OnLaunched(LaunchActivatedEventArgs e)
{
...
SystemNavigationManager.GetForCurrentView().BackRequested += OnBackRequested;
Window.Current.Activate();
}
private void OnBackRequested(object sender, BackRequestedEventArgs e)
{
Frame rootFrame = Window.Current.Content as Frame;
if (rootFrame.CanGoBack)
{
rootFrame.GoBack();
e.Handled = true;
}
}
第3步。处理BackRequested事件
</ul
参考文献 - SystemNavigationManager
希望这对某人有帮助!
答案 1 :(得分:2)
您可以使用BackRequested事件来处理后退请求:
SystemNavigationManager.GetForCurrentView().BackRequested += OnBackRequested;
if (App.MasterFrame.CanGoBack)
{
rootFrame.GoBack();
e.Handled = true;
}
答案 2 :(得分:0)
上面的代码完全正确但你必须在rootFrame变量中添加frame的对象。以下是:
private Frame _rootFrame;
protected override void OnLaunched(LaunchActivatedEventArgs e)
{
Frame rootFrame = Window.Current.Content as Frame;
if (Window.Current.Content==null)
{
_rootFrame = new Frame();
}
}
并将此_rootFrame传递给OnBackRequested方法。像:
private void OnBackRequested(object sender, BackRequestedEventArgs
{
if (_rootFrame.CanGoBack)
{
_rootFrame.GoBack();
e.Handled = true;
}
}