UWP:如何获取任务栏高度
UWP: How to get the TaskBar Height
我正在制作一个 UWP application.My 要求是以编程方式获取任务栏的大小(此应用程序将 运行 在不同分辨率的平板电脑上)。在关注了 Whosebug 上的许多答案(实际上与 hiding/showing 任务栏更相关)之后,我通过了这个:
How do I get the taskbar's position and size?
但是在 UWP 的情况下无法做到这一点 apps.Is 还有其他方法可以获取任务栏的高度。
请注意:任务栏总是可见的,以防我application.I不打算隐藏它
谢谢!!
这不能简单地完成,因为并非每个支持 UWP 应用程序的平台甚至都有桌面或任务栏(并且桌面不算作设备功能之一,例如
摄像头、麦克风、移动或位置传感器)!
如果您需要访问桌面,则必须创建一个桌面应用程序。
嗯!!所以在网上搜索了很多之后,在 Whosebug 上看到了类似的答案和建议,似乎计算 UWP 应用程序中的 TaskBar 高度并不是那么直接或简单的任务。然而,对于我的情况,我最终得到了这个变通方法,它工作正常。但我会继续寻找合适的方法。假设我的屏幕分辨率是 1600x900 ,那么这就是我所做的:
private void GetScreenDimension()
{
//To get Screen Measurements e.g. 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 (i.e 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.Height 作为 828.
2) 当我 运行 带有任务栏自动隐藏(不可见)的应用程序时,我得到 view.VisibleBounds.Height 为 868.
这让我想到 900-868=32 可能是标题栏高度,当我隐藏任务栏后从 828 跳到 868 意味着 868-828=40 可以是任务栏高度。
结论:
标题栏高度=view.VisibleBounds.Top(即32)
任务栏高度=view.VisibleBounds.Top(即32)+(view.VisibleBounds.Top/4)(即8);(32+8 = 共 40)
剩余身高=view.VisibleBounds.Height(即828)
如果我结合以上三个,我使用这行代码得到 900(要求的高度):
_viewModel.ActualScreenHeight = view.VisibleBounds.Height + titleBarHeight + taskBarHeight;
我希望它对其他人也有用。
谢谢!!
我正在制作一个 UWP application.My 要求是以编程方式获取任务栏的大小(此应用程序将 运行 在不同分辨率的平板电脑上)。在关注了 Whosebug 上的许多答案(实际上与 hiding/showing 任务栏更相关)之后,我通过了这个:
How do I get the taskbar's position and size?
但是在 UWP 的情况下无法做到这一点 apps.Is 还有其他方法可以获取任务栏的高度。
请注意:任务栏总是可见的,以防我application.I不打算隐藏它
谢谢!!
这不能简单地完成,因为并非每个支持 UWP 应用程序的平台甚至都有桌面或任务栏(并且桌面不算作设备功能之一,例如 摄像头、麦克风、移动或位置传感器)!
如果您需要访问桌面,则必须创建一个桌面应用程序。
嗯!!所以在网上搜索了很多之后,在 Whosebug 上看到了类似的答案和建议,似乎计算 UWP 应用程序中的 TaskBar 高度并不是那么直接或简单的任务。然而,对于我的情况,我最终得到了这个变通方法,它工作正常。但我会继续寻找合适的方法。假设我的屏幕分辨率是 1600x900 ,那么这就是我所做的:
private void GetScreenDimension()
{
//To get Screen Measurements e.g. 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 (i.e 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.Height 作为 828.
2) 当我 运行 带有任务栏自动隐藏(不可见)的应用程序时,我得到 view.VisibleBounds.Height 为 868.
这让我想到 900-868=32 可能是标题栏高度,当我隐藏任务栏后从 828 跳到 868 意味着 868-828=40 可以是任务栏高度。
结论:
标题栏高度=view.VisibleBounds.Top(即32)
任务栏高度=view.VisibleBounds.Top(即32)+(view.VisibleBounds.Top/4)(即8);(32+8 = 共 40)
剩余身高=view.VisibleBounds.Height(即828)
如果我结合以上三个,我使用这行代码得到 900(要求的高度):
_viewModel.ActualScreenHeight = view.VisibleBounds.Height + titleBarHeight + taskBarHeight;
我希望它对其他人也有用。 谢谢!!