WinUI 3应用如何最优简洁地设置窗口最小、首选及最大尺寸?
在WinUI 3中设置窗口最小、首选和最大尺寸的最佳简洁方法
WinUI 3确实没有WPF里直接的MinWidth/MaxWidth/Width这类属性,最直接简洁的方式是通过AppWindow的SizeConstraints配置,以下分场景说明:
桌面WinUI 3应用(打包/非打包通用)
在窗口的构造函数或Loaded事件中,获取当前窗口对应的AppWindow实例,然后设置尺寸规则:
using Microsoft.UI.Windowing; using Microsoft.UI.Xaml; using WinRT.Interop; // 在窗口类中实现 public MainWindow() { this.InitializeComponent(); this.Loaded += MainWindow_Loaded; } private void MainWindow_Loaded(object sender, RoutedEventArgs e) { var appWindow = GetCurrentAppWindow(); // 设置最小尺寸 appWindow.SizeConstraints.MinSize = new SizeInt32 { Width = 600, Height = 400 }; // 设置最大尺寸 appWindow.SizeConstraints.MaxSize = new SizeInt32 { Width = 1200, Height = 800 }; // 设置启动时的首选尺寸 appWindow.Resize(new SizeInt32 { Width = 800, Height = 600 }); } private AppWindow GetCurrentAppWindow() { var hwnd = WindowNative.GetWindowHandle(this); var windowId = Win32Interop.GetWindowIdFromWindow(hwnd); return AppWindow.GetFromWindowId(windowId); }
UWP风格WinUI 3应用(旧模式)
如果是基于UWP的WinUI 3应用,可以用ApplicationView来配置:
using Windows.UI.ViewManagement; var appView = ApplicationView.GetForCurrentView(); // 设置最小尺寸 appView.SetPreferredMinSize(new Windows.Foundation.Size(600, 400)); // 设置首选启动尺寸 appView.TryResizeView(new Windows.Foundation.Size(800, 600)); // 最大尺寸可通过监听窗口Resize事件限制,或改用AppWindow方式实现
注意事项
- 确保在窗口加载完成后执行设置,避免因窗口未初始化导致的异常;
AppWindow是WinUI 3推荐的窗口管理方式,功能更全面,优先使用。
内容的提问来源于stack exchange,提问作者Георгий Попов
相关产品推荐
相关产品推荐

