1

我正在为我的 uwp 应用程序创建一个自定义标题栏。我想匹配系统栏的高度。

也许能达到那个高度

CoreApplication.GetCurrentView().TitleBar.Height

但这取决于很多事情。标题栏可能尚未调整大小。

我还看到了一个建议(来自 winforms)来查看窗口顶部的 y 坐标和内容视图顶部的差异。但这又似乎很可疑。一方面,一旦我将 ExtendViewIntoTitleBar 设置为 true,我认为该方法不会起作用。

是否有可靠的方法以编程方式获取默认高度?

4

1 回答 1

1

我知道这个答案可能对最初提出这个问题的人没有用,但我仍然想建议答案:

您可以为标题栏的大小更改时注册一个处理程序。(文档提到尺寸变化,但它可能只是标题按钮的偏移量而不是高度) 这段代码对我来说效果很好,至少目前

//Put the below line in the Page initialization/OnNavigated function
var coreTitleBar = CoreApplication.GetCurrentView().TitleBar;
coreTitleBar.ExtendViewIntoTitleBar = true;
coreTitleBar.LayoutMetricsChanged += CoreTitleBar_LayoutMetricsChanged;

private void CoreTitleBar_LayoutMetricsChanged(CoreApplicationViewTitleBar sender, object args)
{
     MyAppTitleBar.Height = sender.Height;
}

只要 titleBar 的尺寸发生变化(如 DPI 变化) ,上述代码CoreTitleBar_LayoutMetricsChanged就会自动调用您的函数 ( )。这MyAppTitleBarGrid我为我的自定义标题栏制作的。

更多信息可以在这里找到

于 2020-05-03T15:00:52.413 回答