所以在UWP中,我们可以使用
ApplicationView.GetForCurrentView().SetPreferredMinSize(new Size(500, 500));
but
ApplicationView.GetForCurrentView();
在 WinUI 3 中返回 null。
有没有办法设置窗口的最小尺寸
推荐的解决方案,在 GitHub 上实现 https://github.com/WinUICommunity/SettingsUI/blob/ce6bd6a86c07170d2ffcaa5a80c7dc02a2ba5028/src/SettingsUI/Tools/Helpers/WindowHelper/WindowHelper.ReSizeWindow.cs,就是使用P/Invoke来调用窗口子类化函数 https://learn.microsoft.com/en-us/windows/win32/controls/subclassing-overview#subclassing-controls-using-comctl32dll-version-6 SetWindowSubclass
and DefSubclassProc
:
- 编写一个静态 WndProc 方法来处理
WM_GETMINMAXINFO
,然后将任何其他窗口消息转发到原始 WndProc,通过DefSubclassProc
(or CallWindowProc
在示例中),尽管请注意缺点 https://learn.microsoft.com/en-us/windows/win32/controls/subclassing-overview#disadvantages-of-the-old-subclassing-approach).
- 通过以下方式注册您的新 WndProc
SetWindowSubclass
(or SetWindowLongPtr
在示例中)。
这来自XAML GitHub 存储库上的问题 https://github.com/microsoft/microsoft-ui-xaml/issues/2945.
See 这个类似的问题 https://stackoverflow.com/questions/72825683/wm-getminmaxinfo-in-winui-3-with-c and 这个其他类似的问题 https://stackoverflow.com/questions/72755645/how-can-i-add-a-minimum-size-in-winui-3了解更多信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)