UWP:如何获取任务栏高度

我正在制作UWP应用程序。我的要求是以编程方式获取TaskBar的大小(此应用程序将在不同分辨率的平板电脑上运行)。 在stackoverflow(这实际上更隐藏/显示任务栏更相关)上的下面的许多答案后,我来通过这个:

我如何获得任务栏的位置和大小?

但是这不能在UWP应用程序的情况下完成。是否有任何其他方式来获得任务栏的高度。

请注意 :在我的应用程序的情况下,任务栏始终可见。我不打算隐藏它

谢谢!!

这不能简单地完成,因为不是每个支持UWP应用程序的平台都有一个桌面或任务栏(桌面不算是像摄像机,麦克风,移动或位置传感器等设备功能之一)!

如果你需要访问桌面,你将不得不创建一个桌面应用程序。

好!! 所以在互联网上搜索了很多东西之后,在stackoverflow上看到了类似的答案和建议,似乎计算UWP应用程序中的TaskBar高度并不是那么直接或简单的任务。 然而对于我的情况,我结束了这项工作,周围的工作正常。 但是我会继续找到一个合适的方法。 假设我的屏幕分辨率是1600×900 ,那么这就是我所做的:

private void GetScreenDimension() { //To get Screen Measurements eg height, width, X,Y... ApplicationView view = ApplicationView.GetForCurrentView(); //Getting the Window Title Bar height(In my case I get :Top=32,Bottom=860) double titleBarHeight = view.VisibleBounds.Top; //Getting the TaskBar Height double taskBarHeight = view.VisibleBounds.Top + (view.VisibleBounds.Top / 4); //Getting the workable Height of the screen ( excluding Task Bar Height) double availableheight = GridTimelineContent.ActualHeight - taskBarHeight; double availablewidth = GridTimelineContent.ActualWidth; if (_viewModel != null) { _viewModel.AvailableHeight = availableheight; _viewModel.AvailableWidth = availablewidth; //Getting the actual Physical height (ie including TitleBar Height and Task Bar Height, gives 900 in my case which is what I wanted) _viewModel.ActualScreenHeight = view.VisibleBounds.Height + titleBarHeight + taskBarHeight; _viewModel.PageWidth = (this as Page).ActualWidth; } } 

请注意:

1)当我运行应用程序与任务锁定(可见),我得到view.VisibleBounds.Height828

2)当我使用TaskBar AutoHidden(Invisible)运行应用程序时,我得到view.VisibleBounds.Height868

这给了我一个想法, 900-868 = 32可以是Tittle Bar高度,当我隐藏任务栏后,从828跳到868意味着868-828 = 40可以是任务栏高度。

结论:

标题栏高度= view.VisibleBounds.Top (这是32)

Task Bar Height = view.VisibleBounds.Top (which is 32) +(view.VisibleBounds.Top / 4) (which is 8) ; (32 + 8 =总计40)

保持高度= view.VisibleBounds.Height (828)

如果我结合上述三个,我得到900(需要的高度)使用这行代码:

_viewModel.ActualScreenHeight = view.VisibleBounds.Height + titleBarHeight + taskBarHeight;

我希望这对其他人也有用。 谢谢!!