【问题标题】:Windows 10 UWP, back button to previous Frame with hamburger menuWindows 10 UWP,带有汉堡菜单的后退按钮到上一帧
【发布时间】:2016-10-15 15:56:10
【问题描述】:

我将仅在我的应用程序的第一页中可用的菜单更改为汉堡菜单。现在它在所有页面中都可用。

现在问题出在我手机上的硬件按钮上。以前,这个解决方案效果很好: http://devcenter.wintellect.com/jprosise/handling-the-back-button-in-windows-10-uwp-apps

现在我有第一页(根)加载到“框架”(splitview.content)主页。现在,当我从菜单其他页面(在我的示例中为“产品”)按手机上的“返回”按钮时,应用程序正在关闭。我想是因为应用程序不知道它在“框架”页面中,但它仍然在根框架上,所以后退按钮正在关闭应用程序

我不知道如何处理这个

我正在发送我的示例: example

【问题讨论】:

    标签: c# xml uwp


    【解决方案1】:

    基本上,您需要做的是在MyFrame 上订阅Navigated 事件,而不是在rootFrame 上订阅该事件,在root 页面中订阅BackRequested 事件,而不是尝试反向导航rootFrame,反向导航MyFrame。因此,root 页面中的代码可能如下所示:

    XAML:

    <Frame Name="MyFrame" Navigated="MyFrame_Navigated"/>
    

    C#:

    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();
        }
    }
    

    您还应该删除App.xaml.cs 中与rootFrame 的后退导航相关的所有代码,因为自定义框架中的后退导航不需要这些代码。

    下次,请在您的问题中发布相关代码。它会更容易阅读:)

    【讨论】:

    • 感谢它确实更好,但现在它是其他一些问题。问题与否,但是,现在我真的不知道这种行为是否正确:) 假设我有这样的页面层次结构: Main |人产品 | | EditPer EditPro
    • 对不起,我按错了。当我选择产品时效果很好,然后从产品中单击编辑。当我按回来时,它会以很好的方式后退。问题是,例如,当我在 EditProduct 页面上并从菜单“Persons”中按下时。然后,当我按下返回按钮时,它返回到“EditProductPage”,而不是“主”产品的“父”页面。我真的不知道这是否是正确的行为。但是在我的实际应用程序中,我的页面很少,当我多次测试此操作时,它会创建以前页面的奇怪“队列”。如果你愿意,我可以把我的整个项目发给你
    • 那么在编辑页面上不显示汉堡菜单会更容易,因此用户必须单击取消/保存按钮返回到产品页面,在那里他可以使用汉堡菜单。
    • 您可以通过将 rootFrame 导航到编辑页面来实现。您还应该在 App.xaml.cs 中再次实现 rootFrame 的反向导航逻辑,以便它可以返回到带有汉堡菜单的页面。
    • 这个答案帮助我理解了与全局后退按钮相关的框架导航。我发现在App 类中实现这一点的概念可以应用于任何自定义框架。为你 +1!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-22
    • 1970-01-01
    • 2016-05-15
    • 2016-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多