web-dev-qa-db-ja.com

Windows 10 UWPアプリのデスクトップでのウィンドウサイズの設定

Visual Studio 2015 Community Editionを使用して、Windows 10 ProでUWPアプリ開発の学習を始めました。 MainPage.xamlのPageタグのWidthおよびHeight属性を設定することで、 公式の「Hello、World!」サンプルのC#バージョン を変更しようとしました。

興味深いことに、アプリを起動すると、サイズが異なります。さらに、ウィンドウのサイズを変更してから再起動すると、アプリは以前のウィンドウサイズを記憶しているようです。

少なくともデスクトップPCで、UWPアプリに定義済みのウィンドウサイズを強制することは可能ですか?

29
kol

PreferredLaunchViewSizeの-​​constructorMainPageを設定してみてください:

public MainPage()
{
    this.InitializeComponent();

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

@kolも指摘したように、デフォルトの500x32より小さいサイズが必要な場合は、手動でリセットする必要があります。

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

ウィンドウサイズを実際に制御することはできず、サイズを変更しようとしても失敗する可能性があります。私はMSDNフォーラムで同じ質問をし、ここで答えを得ました:

Windows 10ユニバーサルDirectXアプリケーション

ところで、これは、イベントハンドラー「OnLaunched」またはイベントハンドラー「OnActivated」findのソリューションです。

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」より小さくすることはできません。

10
Rafal Rebisz

アプリの最初の起動では、ApplicationView.PreferredLaunchWindowingMode に設定されています ApplicationViewWindowingMode.Autoコードの設定に関係なく。

ただし、 MSDNのこの質問 から、これを克服する方法があるかもしれません。答えの1つは、その最初の起動サイズを設定する方法を提供します(その後、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;
    }
}

追伸私はこれをテストしていません。

3
binaryfunt