Xaml Windows8应用程序。后退按钮不工作

Xaml Windows8应用程序。后退按钮不工作,xaml,windows-8,microsoft-metro,Xaml,Windows 8,Microsoft Metro,我正在使用一个带有应用程序名和后退按钮的新项目基本模板。 它正在一个“空白”项目中使用 但是,后退按钮不响应触摸事件 以下是生成的代码。后退按钮消失了 <Button x:Name="backButton" IsEnabled="{Binding Frame.CanGoBack, ElementName=pageRoot}" Style="{StaticResource BackButtonStyle}" Click="GoBack"/> 然而,这也不起作用。可能是因为一些自动生成

我正在使用一个带有应用程序名和后退按钮的新项目基本模板。 它正在一个“空白”项目中使用

但是,后退按钮不响应触摸事件

以下是生成的代码。后退按钮消失了

<Button x:Name="backButton" IsEnabled="{Binding Frame.CanGoBack, ElementName=pageRoot}" Style="{StaticResource BackButtonStyle}" Click="GoBack"/>
然而,这也不起作用。可能是因为一些自动生成的东西,因为我可以自己创建一个按钮并将其连接起来(所以我真的尝试使用模板)

有什么想法吗

编辑: 我觉得很奇怪,导航都没用。在钻了更多的孔之后,它似乎与LayoutWarePage有关。我在这里遗漏了一些东西。将发布更新


编辑:很抱歉。我重新添加了事件单击侦听器(我必须删除该复制)。然而,这仍然不能解决我的问题。我试着将后退按钮设置为“GoBack”功能,当你按下后退按钮时,它就消失了。我还尝试创建自己的方法并尝试自己导航,但仍然不起作用。

从我看到的XAML标记来看,没有绑定到按钮的
Click
事件处理程序,因此除非将其挂接到某个按钮,否则不会执行任何操作。

从我看到的XAML标记来看,没有绑定到按钮的
Click
事件处理程序,因此,除非您将其挂接到一个,否则不会执行任何操作。

您需要一个
单击按钮上的事件处理程序<代码>单击“返回”



GoBack
函数在
LayoutAwarePage
中可用,如果不是,请确保它是页面的基类
LayoutWarePage
类驻留在
Project\Common

中,您需要一个
单击按钮上的事件处理程序<代码>单击“返回”



GoBack
函数在
LayoutAwarePage
中可用,如果不是,请确保它是页面的基类
LayoutWarePage
类驻留在
Project\Common

中,您不需要编写任何自己的代码来启用back按钮,因为它会自动绑定到基础导航框架中。如果后堆栈中有一个页面要导航到,则将启用“后退”按钮

从我看到的情况来看,您缺少的是,如果您在添加的基本页面上启动应用程序,那么导航框架的后堆栈中没有任何内容可供您导航

我使用以下步骤测试了您的场景:

我使用空白应用程序模板创建了一个新的Cy/XAML Windows商店应用程序。李>
  • 然后添加了一个新的基本页面(BasicPage1.xaml)
  • 打开MainPage.xaml,并在页面中添加一个按钮
  • 双击按钮,并将以下代码添加到click事件处理程序:

    this.Frame.Navigate(typeof(BasicPage1))


  • 运行项目后,“后退”按钮按预期工作。

    您不需要编写任何代码来启用“后退”按钮,因为它会自动绑定到基础导航框架中。如果后堆栈中有一个页面要导航到,则将启用“后退”按钮

    从我看到的情况来看,您缺少的是,如果您在添加的基本页面上启动应用程序,那么导航框架的后堆栈中没有任何内容可供您导航

    我使用以下步骤测试了您的场景:

    我使用空白应用程序模板创建了一个新的Cy/XAML Windows商店应用程序。李>
  • 然后添加了一个新的基本页面(BasicPage1.xaml)
  • 打开MainPage.xaml,并在页面中添加一个按钮
  • 双击按钮,并将以下代码添加到click事件处理程序:

    this.Frame.Navigate(typeof(BasicPage1))


  • 运行项目,返回按钮按预期工作。

    好的,这种方法似乎从基本页面获取代码。您能确认您是从LayoutWarePage继承的,而不是从Page继承的吗?否则,GoBack不会以这种方式实现。此外,如果您没有首先从此页导航到另一页,则无法返回。最后(这里只是头脑风暴),如果您通过设置框架本身而不是页面(在前面的位置)到达此页面,则无法返回。这将清除导航历史记录

    还有,你能确认这不起作用吗

    this.Frame.GoBack();
    

    祝你好运

    这个方法似乎是从基本页面获取代码。您能确认您是从LayoutWarePage继承的,而不是从Page继承的吗?否则,GoBack不会以这种方式实现。此外,如果您没有首先从此页导航到另一页,则无法返回。最后(这里只是头脑风暴),如果您通过设置框架本身而不是页面(在前面的位置)到达此页面,则无法返回。这将清除导航历史记录

    还有,你能确认这不起作用吗

    this.Frame.GoBack();
    

    祝你好运

    我刚刚和弗兰克有同样的问题。我发现我的问题是,我重写了OnNavigatedTo处理程序,而没有同时调用基类的(LayoutWarePage)处理程序。这意味着LayoutWarePage没有设置其在OnNavigatedFrom处理程序中使用的_pageKey成员变量


    希望这能帮助其他人解决同样的问题。

    我刚刚和弗兰克有同样的问题。我发现我的问题是,我重写了OnNavigatedTo处理程序,而没有同时调用基类的(LayoutWarePage)处理程序。这意味着LayoutWarePage没有设置其在OnNavigatedFrom处理程序中使用的_pageKey成员变量


    希望这能帮助其他人解决同样的问题。

    这也发生在我身上。我知道我的代码中不会有任何更改,所以我检查了项目属性。在commonproperties->References中,我注意到了一个异常,有一些资源从未出现过(我在该项目中应该拥有的只是SQLite for Windows Run)
    this.Frame.GoBack();
    
    Frame.SetNavigationState("1,0");
    
    private void ButtonGoBack_OnClick(object sender, RoutedEventArgs e)
        {
            this.Frame.GoBack();
        }