Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Windows 10 UWP,带汉堡包菜单的上一帧返回按钮_C#_Xml_Uwp - Fatal编程技术网

C# Windows 10 UWP,带汉堡包菜单的上一帧返回按钮

C# Windows 10 UWP,带汉堡包菜单的上一帧返回按钮,c#,xml,uwp,C#,Xml,Uwp,我把应用程序第一页的菜单改成了汉堡包菜单。现在它在所有页面中都可用 现在的问题是我手机上的硬件按钮。以前,此解决方案的效果很好: 现在我有了加载到“frame”(splitview.content)主页的第一个页面(根)。现在,当我从菜单的另一个页面(在我的示例“产品”)按下手机上的“后退”按钮时,应用程序正在关闭。我想是因为应用程序不知道它在“框架”页面中,但它仍然在根框架上,所以后退按钮关闭应用程序 我不知道该怎么办 我将发送我的示例: 基本上,你需要做的是订阅MyFrame上的Navig

我把应用程序第一页的菜单改成了汉堡包菜单。现在它在所有页面中都可用

现在的问题是我手机上的硬件按钮。以前,此解决方案的效果很好:

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

我不知道该怎么办

我将发送我的示例:

基本上,你需要做的是订阅
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();
    }
}