2016-02-14 97 views
1

我正在使用模板10制作主/细节应用程序。主/细节模板10示例使用CommandBar来完全控制显示后退按钮的时间,但我想在PageHeader或shell上显示后退按钮。问题是,因为没有后退堆栈,所以按钮拒绝显示。我该如何处理?显示返回按钮,即使没有页面返回堆栈

回答

2

重写OnNavigatedTo事件并将AppViewBackButtonVisibility设置为隐藏在代码隐藏文件中,以便为每个要启用标题栏后退按钮的页面显示。

这里看看:http://grogansoft.com/blog/?p=1116

的重要组成部分,是"AppViewBackButtonVisibility"

if (rootFrame.CanGoBack) 
{ 
    // Show UI in title bar if opted-in and in-app backstack is not empty. 
    SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = 
     AppViewBackButtonVisibility.Visible; 
} 

我也建议你看一看的AppBar属性。 尤其是其获取或设置UIElement的可见性,你可以强制项目的可见性可见性:

https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.appbar.aspx

+0

我仍然无法使PageHeader的后退按钮显示。这里是当应用程序移动到细节视图时运行的代码,我想在PageHeader中显示后退按钮:SystemNavigationManager.GetForCurrentView()。AppViewBackButtonVisibility = AppViewBackButtonVisibility.Visible; Template10.Common.BootStrapper.Current.ShowShellBackButton = false; Template10.Common.BootStrapper.Current.UpdateShellBackButton(); Template10.Common.BootStrapper.Current.NavigationService.Refresh();' –

+1

我认为你的答案指的是标准UWP而不是Template10 API。我也在寻找解决方案。 –

0

所以我创建了一个哈克解决这个。基本上,我将一个虚拟值添加到堆栈中,以便后退按钮认为有一些东西可以返回。

var entry = new PageStackEntry(typeof(bool), null, null); 
Frame.BackStack.Insert(0, entry); 

然后我添加了一个BootStrapper.BackRequested事件,这将HandledEventArgs.Handledtrue所以Template10犯规居然弹出页面。这样我就可以完全控制背部堆叠和后部可视性。

+0

我已经注册了BootStrapper.BackRequested的监听器,但是当页面按钮的后退按钮被按下时,BackRequested似乎不会发生......我在我的BackRequested处理方法中设置了一个断点,并且它没有被击中,它只是失败: '在Windows.UI.Xaml.Controls.Frame.GoBack() 在Template10.Services.NavigationService.FrameFacade.GoBack() 在Template10.Services.NavigationService.NavigationService.GoBack() 在Template10。 Behaviors.NavButtonBehavior.Element_Click(Object sender,RoutedEventArgs e)' –

+0

我正在使用模板10的最新NuGet版本。这可能是在更新的GitHub代码中修复的并且尚未包含在NuGet中的东西?我偶然发现了这个:https://github.com/Windows-XAML/Template10/issues/454 –

+0

不理会我以前的评论;我昨天更新到1.1.4发布,现在我无法点击PageHeader的后退按钮。嗯。 –