如何在桌面上设置 windows 通用应用程序的最小大小?

How to set min size of windows universal app on desktop?

我想为桌面上的 windows 通用应用程序设置最小尺寸,例如 800x600。

我找到了一个方法

ApplicationView.GetForCurrentView().SetPreferredMinSize(new Size(800, 600));

但它不起作用,我仍然可以将 window 拖动到 500x300。

我想念什么?

来自 MSDN:

The largest allowed minimum size is 500 x 500 effective pixels. If you set a value outside of these bounds, it is coerced to be within the allowed bounds.

也许这就是原因

MSDN Page

对于我的应用程序,我在桌面上将其设置为 运行,启动高度为 480,宽度为 320。

在我主页的代码隐藏文件中,我调用了以下方法:

    public MainPage()
    {
      GetDeviceFormFactorType();
    }


       public static DeviceFormFactorType GetDeviceFormFactorType()
    {
        switch (AnalyticsInfo.VersionInfo.DeviceFamily)
        {
            case "Windows.Mobile":
                return DeviceFormFactorType.Phone;
            case "Windows.Desktop":
                ApplicationView.GetForCurrentView().SetPreferredMinSize(new Size { Width = 320, Height = 480 });
                ApplicationView.PreferredLaunchViewSize = new Size { Height = 480, Width = 320 };
                ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.PreferredLaunchViewSize;
                return DeviceFormFactorType.Desktop;
            case "Windows.Tablet":
                return DeviceFormFactorType.Tablet;
            case "Windows.Universal":
                return DeviceFormFactorType.Iot;
            case "Windows.Team":
                return DeviceFormFactorType.SurfaceHub;
            default:
                return DeviceFormFactorType.other;
        }
    }


        public enum DeviceFormFactorType
    {
        Phone,
        Desktop,
        Tablet,
        Iot,
        SurfaceHub,
        other
    }

我找到了解决方案https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.viewmanagement.applicationview.tryresizeview

对于桌面,我可以设置一个大于 500x500 的最小尺寸,如下代码所示。

private void Page_SizeChanged(object sender, SizeChangedEventArgs e)
{
    if (e.NewSize.Width < 800 || e.NewSize.Height < 600)
    {
        ApplicationView.GetForCurrentView().TryResizeView(new Size(800, 600));
    }
}