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

.NET MAUI如何设置桌面程序窗口的最小尺寸?

在.NET MAUI中设置桌面窗口最小尺寸

和Avalonia直接通过XAML属性设置不同,.NET MAUI没有全局统一的XAML属性来配置窗口最小尺寸,需要针对不同的桌面平台(Windows、macOS、Linux)编写平台特定代码来实现。以下是各平台的具体实现方式:

Windows平台

在Windows项目的Platforms/Windows/App.xaml.cs中,修改OnLaunched方法,获取原生窗口实例后设置最小宽高:

protected override void OnLaunched(LaunchActivatedEventArgs args)
{
    base.OnLaunched(args);

    var currentWindow = Application.Current.Windows.FirstOrDefault();
    if (currentWindow?.Handler?.PlatformView is Microsoft.UI.Xaml.Window nativeWindow)
    {
        nativeWindow.MinWidth = 800;
        nativeWindow.MinHeight = 400;
    }
}

macOS平台

在MacCatalyst项目的Platforms/MacCatalyst/AppDelegate.cs中,在FinishedLaunching方法里配置窗口最小尺寸:

public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
{
    base.FinishedLaunching(application, launchOptions);

    var currentWindow = Application.Current.Windows.FirstOrDefault();
    if (currentWindow?.Handler?.PlatformView is UIKit.UIWindow nativeWindow)
    {
        nativeWindow.WindowScene.SizeRestrictions.MinimumSize = new CoreGraphics.CGSize(800, 400);
    }

    return true;
}

Linux平台(GTK)

在Linux项目的Platforms/Linux/Program.cs中,创建原生GTK窗口时设置最小尺寸:

static void Main(string[] args)
{
    var app = Gtk.Application.New("com.yourcompany.yourapp", GLib.ApplicationFlags.None);
    app.Register(GLib.Cancellable.Current);

    var gtkWindow = new Gtk.Window("Your App");
    gtkWindow.DeleteEvent += (sender, e) => app.Quit();
    
    // 设置窗口最小尺寸
    gtkWindow.SetSizeRequest(800, 400);

    var mauiApp = MauiProgram.CreateMauiApp();
    var mauiContext = new MauiContext(mauiApp.Services);
    var mainWindow = new MainWindow();
    
    mainWindow.Handler = new Microsoft.Maui.Handlers.WindowHandler();
    mainWindow.Handler.SetMauiContext(mauiContext);
    mainWindow.Handler.SetVirtualView(mainWindow);

    gtkWindow.Add((Gtk.Widget)mainWindow.Handler.PlatformView);
    gtkWindow.ShowAll();

    app.Run();
}

注意事项

  • 确保窗口实例已完成初始化后再访问Handler.PlatformView,避免空引用异常。
  • 各平台的原生窗口API不同,需对应使用各自的类型和属性进行配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 09:51:00