.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
相关产品推荐
相关产品推荐

