Window.Current.按方向不带状态栏的边界高度

本文关键字:状态栏 边界 高度 Current 方向 Window | 更新日期: 2023-09-27 17:59:37

我正在计算屏幕宽度和高度,它似乎关闭了。看起来状态栏的高度或宽度包含在Window.Current.Bounds中。

它的纵向高度应该是32像素,横向高度应该是72像素,但它似乎是按比例缩放的,因为Windows.UI.ViewManagement.StatusBar.GetForCurrentView().OccludedRect.Height显示26.6667和60。

获取屏幕高度和宽度(不包括状态栏)的最佳方法是什么?

private void LayoutControls()
{
    var bounds = Window.Current.Bounds;
    var scale = DisplayInformation.GetForCurrentView().RawPixelsPerViewPixel;
    var statusBar = Windows.UI.ViewManagement.StatusBar.GetForCurrentView().OccludedRect;
    if (bounds.Width < bounds.Height)
    {
        // Portrait
        bounds.Height -= 32d / scale;
    }
    else
    {
        // Landscape
        bounds.Width -= 72d / scale;
    }
    // do something with new bounds
}

从来都不是32岁,也从来都不是72岁。/ scale适用于某些DPI手机,但不适用于1080p。调查Windows.UI.ViewManagement.StatusBar.GetForCurrentView().OccludedRect给出了似乎正确的高度,但不会随着Window.Current.SizeChanged事件而更新。

有什么想法吗?

Window.Current.按方向不带状态栏的边界高度

尝试

Windows.UI.ViewManagement.ApplicationView.GetForCurrentView().VisibleBounds.Height;

正如文件所说:

Gets the visible region of the window (app view). The visible region is the region not occluded by chrome such as the status bar and app bar.