我正在为我的uwp应用创建一个自定义标题栏。我想匹配系统栏的高度。
我可能能够达到那个高度
CoreApplication.GetCurrentView().TitleBar.Height
但这取决于很多事情。标题栏可能尚未调整大小。
我还看到了一个建议(来自winforms)来查看窗口顶部和内容视图顶部的y坐标的差异。但这再次看起来很可疑。首先,一旦我将ExtendViewIntoTitleBar设置为true,我认为该方法不会起作用。
是否有可靠的方式以编程方式获取默认高度?
答案 0 :(得分:1)
我知道这个答案可能对当时最初问这个问题的人没有用,但是我仍然想提出答案:
您可以在标题栏大小更改时注册处理程序。 (文档中提到了尺寸变化,但可能只是标题按钮的偏移量而不是高度) 至少这段时间,这段代码对我来说很有效
In [406]: for x in ['one','tow','three']:
...: %run echo.py -x x
...:
['echo.py', '-x', 'x']
['echo.py', '-x', 'x']
['echo.py', '-x', 'x']
In [407]: for x in ['one','tow','three']:
...: %run echo.py -x $x
...:
['echo.py', '-x', 'one']
['echo.py', '-x', 'tow']
['echo.py', '-x', 'three']
只要titleBar的尺寸发生变化(例如DPI中的变化),以上代码就会自动调用您的函数(//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;
}
。在这里,CoreTitleBar_LayoutMetricsChanged
是我为自定义标题栏制作的MyAppTitleBar
。
可以找到更多信息here