【问题标题】:UWP: How to get the TaskBar HeightUWP:如何获取任务栏高度
【发布时间】:2016-02-27 04:05:52
【问题描述】:

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

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

但是在UWP应用的情况下这不能做到。有没有其他方法可以获取任务栏的高度。

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

谢谢!!

【问题讨论】:

  • 你说的是 UWP 桌面的 TitleBar 吗?
  • @JustinXL 没有。我说的是任务栏,我们有 Windows 开始按钮和快速启动图标等。谢谢

标签: windows uwp windows-10-universal


【解决方案1】:

这不能仅仅因为不是每个支持 UWP 应用的平台都具有桌面或任务栏(并且桌面不算作设备功能之一,例如 摄像头、麦克风、运动或位置传感器)!

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

【讨论】:

  • 是的,我同意你的观点。但我想问的是具有平板模式和桌面模式的平板电脑(新的 Windows 10 设备),我如何获得这些平板电脑中任务栏的高度?您可能会假设此应用程序将仅用于 Surface 或 HP 流平板电脑(对不起,但只是假设)。我只是想知道一种找到任务栏高度的方法。
  • @SaurabhRai:很抱歉在这里没有提供更多帮助。也许您可以多解释一下您的实际要求。您只是想全屏运行您的应用程序吗?
  • 感谢您的支持。我找到了解决我的情况的方法,并在答案中提到了相同的方法。但如果您还有更好的方法,请告诉我。
【解决方案2】:

嗯!!因此,在互联网上进行了大量搜索后,在 stackoverflow 和建议上看到了类似的答案,看来在 UWP 应用程序中计算任务栏高度并不是那么直接或简单的任务。但是,对于我的情况,我最终得到了这个 workaround,它工作正常。但我会继续寻找合适的方法。假设我的屏幕分辨率是 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;

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-19
    • 2015-06-26
    • 2018-06-24
    • 2019-09-11
    相关资源
    最近更新 更多