UWP扩展到标题栏-默认标题栏转换后退按钮

时间:2018-08-05 08:24:14

标签: c# xaml uwp

在我的UWP应用中,我试图使后退按钮进入标题栏,这是我过去做过的很多次。这次,我面临的麻烦是默认标题栏似乎并没有消失,而是悬停在我的按钮上,因此我无法按下它。我尝试创建带有边距的自定义标题栏,但是并没有解决问题。这是标题栏的扩展...:

var coreTitleBar = CoreApplication.GetCurrentView().TitleBar;
coreTitleBar.ExtendViewIntoTitleBar = true;

...以及自定义标题栏:

var titleBarGrid = new Grid()
{
    Background = new SolidColorBrush(Colors.Transparent),
    HorizontalAlignment = HorizontalAlignment.Stretch,
    VerticalAlignment = VerticalAlignment.Top,
    Height = 48,
    Margin = new Thickness(50, 0, 150, 0),
};
Window.Current.SetTitleBar(titleBarGrid);

这些正在App.xaml.cs中设置。

如何删除/覆盖默认标题栏?

2 个答案:

答案 0 :(得分:0)

问题是您将titleBarGrid的背景色设置为Transparent。尽管这是一种完全透明的颜色,但是对于命中测试,它仍然是“纯色”。如果要确保点击Grid,请不要完全设置Background

我还认为SetTitleBar的参数应该是已经属于页面XAML树的一部分的控件,因此您应该首先将Grid添加到页面上的某个位置。最简单的解决方案是直接在XAML中创建。

最后,如果要保持纯色背景,还可以观察从Inset事件获得的标题栏的CoreTitleBar.LayoutMetricsChanged值。 SystemOverlayLeftInset属性将告诉您应该在左侧添加多少填充,以便内容不会覆盖标题栏的后退按钮。

最后-我想提一下,最新的设计指南不鼓励在标题栏中使用后退按钮,而是建议您在应用程序用户界面中实施后退按钮。参见documentation

  

以前,UWP应用使用AppViewBackButtonVisibility进行向后导航。将继续支持该API以实现向后兼容性,但我们不再建议您依赖标题栏的后退按钮。相反,您的应用应绘制自己的应用内后退按钮。

后退按钮应该是您应用内用户界面的一部分,因为否则,当Windows 10中发布“设置”功能时,后退按钮栏会显示在您的应用程序顶部。

答案 1 :(得分:0)

我通过将settitlebar(grid)移到InitializeComponent()上方以某种方式修复了它。马丁(Martin)-如果我不设置颜色,则该窗口将不可拖动,因此除了最小化按钮的默认左侧外,没有其他可拖动的东西。我制作为标题栏的网格的边距不与我的任何按钮重叠。