UWP:如何获得TaskBar高度

时间:2015-11-24 16:01:53

标签: windows uwp windows-10-universal

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

How do I get the taskbar's position and size?

但是在UWP应用程序的情况下无法做到这一点。还有其他方法可以获得TaskBar的高度。

请注意:如果我的应用程序,TaskBar始终可见。我不打算隐藏它

谢谢!

2 个答案:

答案 0 :(得分:3)

嘛!!因此,经过大量的互联网搜索,在stackoverflow和建议上看到类似的答案,似乎在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)当我使用TaskBar Locked(可见)运行应用程序时,我将 view.VisibleBounds.Height 设为 828

2)当我使用TaskBar AutoHidden(Invisible)运行应用程序时,我将 view.VisibleBounds.Height 设为 868

这让我觉得 900-868 = 32 可能是Tittle Bar Height,当我隐藏任务栏后我从828跳到868意味着 868-828 = 40 < / strong>可能是任务栏高度。

结论:

标题栏高度= 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;

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

答案 1 :(得分:1)

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

如果您需要访问桌面,则必须创建桌面应用程序。