1

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

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

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

<Button x:Name="backButton" IsEnabled="{Binding Frame.CanGoBack, ElementName=pageRoot}" Style="{StaticResource BackButtonStyle}" Click="GoBack"/>

我什至尝试制作自己的 Click Handle 并尝试自己导航。

this.Frame.Navigate(typeof(MainPage));

但是,这也不起作用。可能是由于自动生成的东西,因为我可以自己创建一个按钮并将其连接起来(所以我真的很想坚持使用模板)。

请问有什么想法吗?

编辑:我觉得很奇怪,导航都没有工作。在钻了一些之后,它似乎是 LayoutAwarePage 的东西。我在这里遗漏了一些东西。将发布更新。

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

4

8 回答 8

4

您需要Click按钮上的事件处理程序。Click="GoBack"

<Button x:Name="backButton" Click="GoBack" IsEnabled="{Binding Frame.CanGoBack, ElementName=pageRoot}" Style="{StaticResource BackButtonStyle}"/>

GoBack功能可用,LayoutAwarePage其中很可能是您页面的基类,如果不确定的话。LayoutAwarePage类驻留在里面Project\Common

于 2012-10-16T01:14:10.197 回答
2

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

于 2012-10-16T00:43:18.810 回答
2

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

从我所见,您所缺少的是,如果您在添加的基本页面上启动应用程序,则导航框架的后台堆栈中没有任何内容可供您导航到。

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

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

    this.Frame.Navigate(typeof(BasicPage1));

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

于 2012-10-16T16:07:25.270 回答
1

好吧,这种方法似乎从 Basic 页面获取代码。您能否确认您是从 LayoutAwarePage 继承而不是从 Page 继承?否则 GoBack 不会以这种方式实现。此外,如果您首先没有从该页面导航,则无法从另一个页面导航。最后(这里只是集思广益),如果您通过设置 Frame 本身而不是页面(在以前的位置)到达此页面,则无法返回。这将清除导航历史记录。

而且,你能确认这不起作用吗?

this.Frame.GoBack();

祝你好运!

于 2012-10-16T16:48:49.853 回答
1

我让我的后退按钮是这样的:

XAML 代码。在这种情况下,LoginPage.xaml。

<Button x:Name="ButtonGoBack" Click="ButtonGoBack_OnClick" Style="{StaticResource NavigationBackButtonNormalStyle}"/>

LoginPage.xaml.cs 中的 C# 代码

private void ButtonGoBack_OnClick(object sender, RoutedEventArgs e)
    {
        this.Frame.GoBack();
    }
于 2015-04-11T09:09:50.237 回答
0

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

希望这可以帮助其他有同样问题的人。

于 2013-08-08T00:08:20.667 回答
0

这也发生在我身上。我知道我的代码没有任何改变,所以我检查了项目属性。在 Common Properties->References 我注意到一个异常,有一些资源从未存在过,(我在那个项目中应该拥有的只是用于 Windows RunTime 的 SQLite)。然后我删除了不需要的资源并修复了导航问题。

于 2014-02-08T23:16:38.563 回答
0

如果你用过

Frame.SetNavigationState("1,0");

您删除了后退堆栈条目,因此后退按钮将不起作用。

于 2014-06-19T12:44:38.333 回答