首页 文章

Windows 10 UWP应用程序 - 在桌面上设置窗口大小

提问于
浏览
24

我刚刚开始使用Visual Studio 2015 Community Edition在Windows 10 Pro上学习UWP应用程序开发 . 我尝试通过在MainPage.xaml中设置Page标签的Width和Height属性来修改C# version of the official "Hello, world" sample . 有趣的是,当我启动应用程序时,它的大小会有所不同 . 此外,如果我调整窗口大小然后重新启动它,应用程序似乎记住它以前的窗口大小 .

是否可以强制UWP应用程序具有预定义的窗口大小,至少在桌面PC上?

3 回答

  • 50

    对于第一个应用程序启动,无论您在代码中设置什么, ApplicationView.PreferredLaunchWindowingMode 都设置为 ApplicationViewWindowingMode.Auto .

    但是,从this question on MSDN开始,可能有办法克服这个问题 . 其中一个答案提供了一种设置第一个启动大小的方法(之后恢复为 Auto ) .

    如果你的目标是只在PreferredLaunchViewSize上启动一次,你就可以使用这个粗鲁的解决方案(由你来实现更好的编码风格!:P)public MainPage()
    {
    this.InitializeComponent();

    var localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;
    if(localSettings.Values [“launchWithPrefSize”] == null)
    {
    //首次推出应用!!
    ApplicationView.PreferredLaunchViewSize = new Size(100,100);
    ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.PreferredLaunchViewSize;
    localSettings.Values [“launchWithPrefSize”] = true;
    }
    //重置自动调整大小 - >下次启动系统将控制PreferredLaunchViewSize
    ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.Auto;
    }
    }

    附:我没有测试过这个 .

  • 1

    嗨我有你的问题的解决方案,问题是你没有真正控制窗口大小,即使你会尝试重新调整它的大小,它可能会失败 . 我在msdn论坛上问了同样的问题并得到了答案

    https://social.msdn.microsoft.com/Forums/en-US/3110e17d-b7c8-4040-8e25-a27df7595f13/windows-10-universal-directx-application?forum=wpdevelop

    顺便说一下这里是您的事件处理程序“OnLaunched”或您的事件处理程序“OnActivated”中的解决方案:

    Window.Current.Activate();
    

    并替换为:

    float DPI = Windows.Graphics.Display.DisplayInformation.GetForCurrentView().LogicalDpi;
    
    Windows.UI.ViewManagement.ApplicationView.PreferredLaunchWindowingMode = Windows.UI.ViewManagement.ApplicationViewWindowingMode.PreferredLaunchViewSize;
    
    var desiredSize = new Windows.Foundation.Size(((float)800 * 96.0f / DPI), ((float)600 * 96.0f / DPI));
    
    Windows.UI.ViewManagement.ApplicationView.PreferredLaunchViewSize = desiredSize;
    
    Window.Current.Activate();
    
    bool result = Windows.UI.ViewManagement.ApplicationView.GetForCurrentView().TryResizeView(desiredSize);
    

    如果将此代码放入“OnActivated()”事件处理程序中会更好,因为它会在应用程序启动时以及在任何中断后变为活动时设置您定义的大小 .

    在“desiredSize”中,计算800是宽度,600是高度需要此计算,因为大小是DPI,因此您必须将其从像素转换为DPI

    另请注意,尺寸不能小于“320x200”

  • 9

    尝试在 MainPage 的构造函数中设置 PreferredLaunchViewSize ,就像这样 .

    public MainPage()
    {
        this.InitializeComponent();
    
        ApplicationView.PreferredLaunchViewSize = new Size(480, 800);
        ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.PreferredLaunchViewSize;
    }
    

    Update

    正如@kol还指出的那样,如果你想要任何小于默认500x320的尺寸,你需要手动重置它 .

    ApplicationView.GetForCurrentView().SetPreferredMinSize(new Size(200, 100));
    

相关问题