我正在使用带有应用名称和后退按钮的新项目基本模板。 它正在“空白”项目中使用。
但是,后退按钮不响应触摸事件。
以下是生成的代码。后退按钮就消失了。
<Button x:Name="backButton" IsEnabled="{Binding Frame.CanGoBack, ElementName=pageRoot}" Style="{StaticResource BackButtonStyle}" Click="GoBack"/>
我甚至尝试制作自己的Click Handle并试着自己导航。
this.Frame.Navigate(typeof(MainPage));
然而,这也不起作用。可能是由于自动生成的东西,因为我可以自己创建一个按钮并将其连接起来(所以我真的试图坚持使用模板)。
有什么想法吗?
编辑: 我发现很奇怪导航没有工作。在钻了一些之后,它似乎与LayoutAwarePage有关。我在这里遗漏了一些东西。将发布更新。
编辑:对不起。我重新添加了事件点击监听器(我必须删除复制)。但是,这仍然无法解决我的问题。我尝试将后退按钮设置为“GoBack”功能,当您点击后退按钮时它就会消失。我也尝试创建自己的方法并尝试自我导航但仍然无效。
答案 0 :(得分:4)
按钮上需要一个Click
事件处理程序。 Click="GoBack"
<Button x:Name="backButton" Click="GoBack" IsEnabled="{Binding Frame.CanGoBack, ElementName=pageRoot}" Style="{StaticResource BackButtonStyle}"/>
GoBack
函数在LayoutAwarePage
中可用,它很可能是您网页的基类,如果不确定的话。 LayoutAwarePage
类位于Project\Common
答案 1 :(得分:2)
从我看到的XAML标记中,没有Click
事件处理程序与该按钮绑定,因此除非您将其挂钩,否则不会采取任何操作。
答案 2 :(得分:2)
您不需要编写任何自己的代码来启用后退按钮,因为它会自动连接到底层导航框架。如果后堆栈中有一个页面要导航,则会启用后退按钮。
我所看到的缺点是,如果您在添加的基本页面上启动应用程序,导航框架的后备堆栈中没有任何内容供您导航。
我使用以下步骤测试了您的方案:
双击该按钮,并将以下代码添加到click事件处理程序:
this.Frame.Navigate(typeof运算(BasicPage1));
跑完项目,后退按钮按预期工作。
答案 3 :(得分:1)
嗯,这种方法似乎从Basic页面获取代码。你能否确认你是从LayoutAwarePage继承而不是从Page?否则GoBack没有以这种方式实现。此外,如果您没有首先从另一个页面导航,则不能GoBack。而且,最后(只是在这里集思广益),如果你通过设置Frame本身而不是页面(在之前的位置)到达此页面,则不能GoBack。这将清除导航历史记录。
而且,你能否确认这不起作用?
this.Frame.GoBack();
祝你好运!
答案 4 :(得分: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();
}
答案 5 :(得分:0)
我和弗兰克有同样的问题。我发现我的问题是我在不调用基类(LayoutAwarePage)处理程序的情况下覆盖了OnNavigatedTo处理程序。这意味着LayoutAwarePage没有设置它在其OnNavigatedFrom处理程序中使用的_pageKey成员变量。
希望这可以帮助其他人解决同样的问题。
答案 6 :(得分:0)
这也发生在我身上。我知道我的代码中没有任何改变,所以我检查了项目属性。在Common Properties-&gt; References中我注意到一个异常,有一些资源从未出现过(我在该项目中应该拥有的只是SQLite for Windows RunTime)。然后我删除了不需要的资源并修复了导航问题。
答案 7 :(得分:0)
如果您使用
Frame.SetNavigationState("1,0");
您删除了后堆栈条目,因此后退按钮将无法正常工作。