我想处理windows phone 8.1应用程序中的背景按钮。我希望每当按下背压时导航到上一页但是当在第二页(主页面之后)按下反压时我希望应用程序退出或要求退出。 我正在使用此代码进行导航
Windows.Phone.UI.Input.HardwareButtons.BackPressed += HardwareButtons_BackPressed;
}
public bool Handled { get; set; }
private void HardwareButtons_BackPressed(object sender, Windows.Phone.UI.Input.BackPressedEventArgs e)
{
Frame frame = Window.Current.Content as Frame;
if (frame == null)
{
return;
}
if (frame.CanGoBack)
{
frame.GoBack();
e.Handled = true;
}
}
答案 0 :(得分:3)
尝试以下代码。它对我有用。
private async void HardwareButtons_BackPressed(object sender,BackPressedEventArgs e) { 框架rootFrame = Window.Current.Content为Frame; e.Handled = true;
var curpage = rootFrame.CurrentSourcePageType.FullName;
if(curpage=="your page name where you want to show dialog")
{
var msg = new MessageDialog("Sure to Exit?");
var okBtn = new UICommand("OK");
var cancelBtn = new UICommand("Cancel");
msg.Commands.Add(okBtn);
msg.Commands.Add(cancelBtn);
IUICommand result = await msg.ShowAsync();
if (result != null && result.Label == "OK")
{
Application.Current.Exit();
}
}
else
{
if (rootFrame.CanGoBack)
{
rootFrame.GoBack();
}
}
}
答案 1 :(得分:0)
我对您的问题的理解是,每当用户通过按返回按钮导航回第一页时,您想要退出应用程序。如果是这样,我们需要做的是在第一页的OnNavigatedFrom事件中检查NavigationMode是否为Back。请尝试以下代码:
protected override void OnNavigatedFrom(NavigationEventArgs e)
{
base.OnNavigatedFrom(e);
if(e.NavigationMode == NavigationMode.Back)
{
App.Current.Exit();
}
}
答案 2 :(得分:0)
如果要删除第一个导航页面的历史记录,可以将其从BackStack中删除,第二个页面将被视为第一个页面。只需将其放在您的主页上:
protected override void OnNavigatedFrom(NavigationEventArgs e)
{
Frame.BackStack.Remove(Frame.BackStack.First());
base.OnNavigatedFrom(e);
}