.net MAUI 如何在启动时最大化应用程序

.net MAUI how to maximize application on startup

如何让 .net MAUI 应用在启动时最大化 Windows 上的 window? 目前它开始时很小 window,我不希望用户必须不断地最大化它。

谢谢,

maui 团队必须等待 winui 团队实现任何缺失的功能,以便他们可以访问 Windows 特定属性,但是此 github discussion 显示了一些您可以插入 MauiApp.CreateBuilder() 方法。

如果应用程序在 windows 上 运行,解决方法将调用 windows 本机服务。从那里您可以插入任何 WinUI3 方法,但这是我根本不熟悉的东西。我采用了 LanceMcCarthy 的答案,以在启动时最大化 window 或在该演示者不正确时恢复他的设置大小。不知道 winuiAppWindow.Presenter 是否永远不会是 OverlapPresenter,但我还是把它留在那里了。

这适用于我当前的 VS2022 17.3 Preview 1 maui RC3 版本,运行 在 windows 11

using Microsoft.Maui.LifecycleEvents;

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

public static class MauiProgram
{
    public static MauiApp CreateMauiApp()
    {
        var builder = MauiApp.CreateBuilder();
        builder
            .UseMauiApp<App>()
            .ConfigureFonts(fonts =>
            {
                fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
            });
#if WINDOWS
        builder.ConfigureLifecycleEvents(events =>
        {
            events.AddWindows(wndLifeCycleBuilder =>
            {
                wndLifeCycleBuilder.OnWindowCreated(window =>
                {
                    IntPtr nativeWindowHandle = WinRT.Interop.WindowNative.GetWindowHandle(window);
                    WindowId win32WindowsId = Win32Interop.GetWindowIdFromWindow(nativeWindowHandle);
                    AppWindow winuiAppWindow = AppWindow.GetFromWindowId(win32WindowsId);
                    if(winuiAppWindow.Presenter is OverlappedPresenter p)
                        p.Maximize();
                    else
                    {
                        const int width = 1200;
                        const int height = 800;
                        winuiAppWindow.MoveAndResize(new RectInt32(1920 / 2 - width / 2, 1080 / 2 - height / 2, width, height));
                    }
                });
            });
        });
#endif
        return builder.Build();
    }
}

在我涉足 maui 的短短几个月内,winui 有了一系列的发展,而且计划更多 (winui roadmap) 所以任何重大的不足都会很快得到解决,尤其是 maui现在随时准备公开发售。