You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 6 MAUI Blazor Hybrid应用如何实现窗口居中显示

.NET 6 MAUI Blazor Hybrid 窗口启动居中解决方案

针对Windows平台,你只需在现有代码中添加获取屏幕显示区域并计算居中坐标的逻辑,即可实现窗口启动时居中显示。修改后的完整代码如下:

#if WINDOWS
using Microsoft.UI;
using Microsoft.UI.Windowing;
using Windows.Graphics;
using Windows.UI.ViewManagement;
#endif

namespace ApplicationName;

public partial class App : Application
{
    const int WindowWidth = 1360;
    const int WindowHeight = 700;

    public App()
    {
        InitializeComponent();

        Microsoft.Maui.Handlers.WindowHandler.Mapper.AppendToMapping(nameof(IWindow), (handler, view) =>
        {
#if WINDOWS
            var nativeWindow = handler.PlatformView;
            nativeWindow.Activate();
            IntPtr windowHandle = WinRT.Interop.WindowNative.GetWindowHandle(nativeWindow);
            WindowId windowId = Microsoft.UI.Win32Interop.GetWindowIdFromWindow(windowHandle);
            AppWindow appWindow = Microsoft.UI.Windowing.AppWindow.GetFromWindowId(windowId);
            
            // 调整窗口大小
            appWindow.Resize(new SizeInt32(WindowWidth, WindowHeight));
            
            // 获取当前显示区域的尺寸(适配多屏幕场景)
            var displayArea = DisplayArea.GetFromWindowId(windowId, DisplayAreaFallback.Nearest);
            if (displayArea != null)
            {
                // 计算居中位置的坐标
                int posX = (displayArea.WorkArea.Width - WindowWidth) / 2;
                int posY = (displayArea.WorkArea.Height - WindowHeight) / 2;
                
                // 将窗口移动到居中位置
                appWindow.Move(new PointInt32(posX, posY));
            }
#endif
        });

        MainPage = new MainPage();
    }
}

关键说明:

  • 使用DisplayArea.GetFromWindowId获取窗口所在的显示区域,能适配多显示器场景,避免窗口定位到其他屏幕的问题。
  • 通过WorkArea获取屏幕工作区尺寸(排除任务栏等系统占用区域),计算出窗口左上角的居中坐标。
  • 调用appWindow.Move方法将窗口定位到计算好的坐标点,配合之前的Resize操作,实现启动时窗口居中显示。

内容的提问来源于stack exchange,提问作者Ravishanka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 14:21:03