0

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

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

但这在 UWP 应用程序的情况下无法完成。有没有其他方法可以获取任务栏的高度。

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

谢谢!!

4

2 回答 2

3

出色地!!因此,在互联网上进行了大量搜索后,在 stackoverflow 和建议上看到了类似的答案,看来在 UWP 应用程序中计算任务栏高度并不是那么直接或简单的任务。但是,对于我的情况,我最终完成了这项工作,效果很好。但我会继续寻找合适的方法。假设我的屏幕分辨率是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(visible) 运行应用程序时,我得到view.VisibleBounds.Height828

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

这让我想到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 (Required Height):

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

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

于 2015-11-26T09:05:28.187 回答
1

它不能简单地完成,因为不是每个支持 UWP 应用程序的平台甚至都有桌面或任务栏(桌面不计入设备功能之一,例如摄像头、麦克风、移动或位置传感器)!

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

于 2015-11-24T16:37:19.070 回答