C# UWP扩展到标题栏-默认标题栏转换返回按钮

C# UWP扩展到标题栏-默认标题栏转换返回按钮,c#,xaml,uwp,C#,Xaml,Uwp,在我的UWP应用程序中,我试图将“后退”按钮放入标题栏,这在过去我已经做过很多次了。这一次,我面临的问题是,默认标题栏似乎没有消失,而是悬停在我的按钮上,所以我无法按下它。我尝试创建一个带有页边空白的自定义标题栏,但没有解决这个问题。这是扩展到标题栏的内容…: var coreTitleBar = CoreApplication.GetCurrentView().TitleBar; coreTitleBar.ExtendViewIntoTitleBar = true; …和自定义标题栏: va

在我的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中设置的


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

问题是您正在将
标题栏的背景色设置为
透明。尽管这是一种完全透明的颜色,但在命中测试中它仍然是一种“纯色”。如果要确保
网格
已点击,请不要设置
背景

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

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

最后,我想指出的是,最新的设计指南不鼓励在标题栏中使用后退按钮,而是建议您在应用程序UI中实现后退按钮。见:

以前,UWP应用程序使用AppViewBackButtonVisibility进行向后导航。API将继续受到向后兼容性的支持,但我们不再建议依赖标题栏的“后退”按钮。相反,你的应用应该画出自己的应用内后退按钮


后退按钮应该是应用程序UI中的一部分,否则当Windows 10中释放Sets功能时,它会导致应用程序顶部显示一个不太好的后退按钮栏。

不知何故,我通过移动
设置标题栏(网格)
上面的
InitializeComponent()
来修复它。Martin-如果我不设置颜色,它会使窗口不可拖动,然后除了最小化按钮的默认左侧之外,没有任何东西可以拖动。我制作成标题栏的网格的边距不与我的任何按钮重叠

我跟着老师去测试。它没有悬停在后退按钮上,我可以按它。谢谢你的评论,看看我的答案。