C# Windows 10 UWP,带汉堡包菜单的上一帧返回按钮
我把应用程序第一页的菜单改成了汉堡包菜单。现在它在所有页面中都可用 现在的问题是我手机上的硬件按钮。以前,此解决方案的效果很好: 现在我有了加载到“frame”(splitview.content)主页的第一个页面(根)。现在,当我从菜单的另一个页面(在我的示例“产品”)按下手机上的“后退”按钮时,应用程序正在关闭。我想是因为应用程序不知道它在“框架”页面中,但它仍然在根框架上,所以后退按钮关闭应用程序 我不知道该怎么办 我将发送我的示例:C# Windows 10 UWP,带汉堡包菜单的上一帧返回按钮,c#,xml,uwp,C#,Xml,Uwp,我把应用程序第一页的菜单改成了汉堡包菜单。现在它在所有页面中都可用 现在的问题是我手机上的硬件按钮。以前,此解决方案的效果很好: 现在我有了加载到“frame”(splitview.content)主页的第一个页面(根)。现在,当我从菜单的另一个页面(在我的示例“产品”)按下手机上的“后退”按钮时,应用程序正在关闭。我想是因为应用程序不知道它在“框架”页面中,但它仍然在根框架上,所以后退按钮关闭应用程序 我不知道该怎么办 我将发送我的示例: 基本上,你需要做的是订阅MyFrame上的Navig
基本上,你需要做的是订阅
MyFrame
上的Navigated
事件,而不是订阅rootFrame
上的事件,订阅root
页面中的backrequest
事件,而不是尝试返回rootFrame
,向后导航MyFrame
。因此根目录中的代码可能如下所示:
XAML:
您还应该删除App.xaml.cs
中与rootFrame
反向导航相关的所有代码,因为在自定义框架中反向导航不需要它
下次,请在你的问题中发布相关代码。它会更容易阅读:)谢谢,它的效果确实更好,但现在它是另一个问题。问题与否,但现在我真的不知道这种行为是否正确:)假设我有这样的页面层次结构:Main | Persons Products | | EditPer EditProSorry,我错误地按了enter键。当我选择产品,然后从产品中单击编辑时,效果很好。当我把它按回去的时候,它会以一种很好的方式回来。问题是,例如,当我在EditProduct页面上并从菜单中按“Persons”时。然后,当我按下后退按钮时,它返回到“EditProductPage”,而不是产品的“父”页面,即“Main”。我真的不知道这是不是正确的行为。但在我的实际应用程序中,我的页面很少,当我多次测试这个操作时,它会创建以前页面的奇怪“队列”。如果您需要,我可以将我的整个项目发送给您,那么在编辑页面上不显示汉堡菜单会更容易,因此用户必须单击例如取消/保存按钮返回产品页面,在那里他可以使用汉堡菜单。您可以通过将根框导航到编辑页面来实现这一点。您还应该在App.xaml.cs中再次实现根框架的反向导航逻辑,这样它就可以返回到带有汉堡包菜单的页面。这个答案帮助我理解了与全局反向按钮相关的框架导航。我发现在App
类中实现这一点的概念可以应用于任何自定义框架+1给你!
<Frame Name="MyFrame" Navigated="MyFrame_Navigated"/>
public root()
{
SystemNavigationManager.GetForCurrentView().BackRequested += OnBackRequested;
}
private void MyFrame_Navigated(object sender, NavigationEventArgs e)
{
SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility =
MyFrame.CanGoBack ?
AppViewBackButtonVisibility.Visible :
AppViewBackButtonVisibility.Collapsed;
}
private void OnBackRequested(object sender, BackRequestedEventArgs e)
{
if (MyFrame.CanGoBack)
{
e.Handled = true;
MyFrame.GoBack();
}
}