pas*_*x64 5 .net maui maui-windows
如何使 .net MAUI 应用程序在启动时最大化 Windows 上的窗口?目前它是从一个小窗口开始的,我不希望用户必须不断地最大化它。
谢谢,
尝试这个:
public App()
{
this.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);
ShowWindow(windowHandle, 3);
#endif
});
}
#if WINDOWS
[DllImport("user32.dll")]
public static extern bool ShowWindow(IntPtr hWnd, int cmdShow);
#endif
}
Run Code Online (Sandbox Code Playgroud)
小智 5
maui 团队必须等待 winui 团队实现任何缺失的功能,以便他们可以访问 Windows 特定的属性,但此github 讨论显示了一些可以插入到 MauiApp.CreateBuilder() 方法中的解决方法。
如果应用程序在 Windows 上运行,则解决方法会调用 Windows 本机服务。从那里您可以插入任何 WinUI3 方法,但这是我根本不熟悉的东西。我采纳了 LanceMcCarthy 的答案,在启动时最大化窗口,或者在演示者不正确时恢复他设置的大小。我不知道 是否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();
}
}
Run Code Online (Sandbox Code Playgroud)
在我涉足 maui 的短短几个月内,winui 就取得了很多进展,而且还有更多计划(winui 路线图),因此任何重大缺陷都可能很快得到修复,尤其是 maui 现在随时都会推出通用版本。
| 归档时间: |
|
| 查看次数: |
3866 次 |
| 最近记录: |