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

时间:2015-08-07 20:18:29

标签: c# window win-universal-app windows-10 uwp

我刚刚开始使用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 个答案:

答案 0 :(得分:57)

尝试在PreferredLaunchViewSize构造函数中设置MainPage

public MainPage()
{
    this.InitializeComponent();

    ApplicationView.PreferredLaunchViewSize = new Size(480, 800);
    ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.PreferredLaunchViewSize;
}

<强>更新

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

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

答案 1 :(得分:9)

您好我已经解决了您的问题,问题是您无法控制窗口大小,即使您尝试重新调整大小,也可能会失败。我在msdn论坛上问了同样的问题并得到了答案

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

顺便说一下,这是您事件处理程序中的解决方案&#34; OnLaunched&#34;或者在你的事件处理程序&#34; OnActivated&#34;发现:

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);

最好将此代码放入&#34; OnActivated()&#34;事件处理程序,因为它将在应用程序启动时以及在任何中断后变为活动时设置您定义的大小。

In&#34; desiredSize&#34;计算800是宽度,600是高度需要此计算,因为大小是DPI,因此您必须将其从像素转换为DPI

另请注意,尺寸不能小于&#34; 320x200&#34;

答案 2 :(得分:2)

对于第一个应用启动,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["launchedWithPrefSize"] == null)
        {
            // first app launch only!!
            ApplicationView.PreferredLaunchViewSize = new Size(100, 100);
            ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.PreferredLaunchViewSize;
            localSettings.Values["launchedWithPrefSize"] = true;
        }
        // resetting the auto-resizing -> next launch the system will control the PreferredLaunchViewSize
        ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.Auto;
    }
}

P.S。我没有测试过这个。