web-dev-qa-db-ja.com

起動時にUWPアプリウィンドウを最大化する

以前にデスクトップでサイズを変更して閉じた後でも、UWPアプリウィンドウを最大化する方法(C#またはXAML)はありますか?

ApplicationViewWindowingMode.FullScreenで試しましたが、これによりアプリが全画面表示になり、Widnowsタスクバーもカバーされます。

9
Jessica

PreferredLaunchViewSizeから別の値ApplicationViewWindowingModeを使用して、_ApplicationView.PreferredLaunchViewSize_を設定できますが、重要なのはsizeが何をしているのかを調べることです。することが。

理論的には、非常に大きな数を使用することができ、ウィンドウは可能な最大値まで拡張されます。ただし、有効ピクセルで画面サイズを計算する方がおそらく安全です。

したがって、メインのPageで次のメソッドbeforeInitializeComponent();を呼び出すだけで、起動時のウィンドウが最大化されます。

_private static void MaximizeWindowOnLoad()
{
    // Get how big the window can be in epx.
    var bounds = ApplicationView.GetForCurrentView().VisibleBounds;

    ApplicationView.PreferredLaunchViewSize = new Size(bounds.Width, bounds.Height);
    ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.PreferredLaunchViewSize;
}
_

アプリをアンインストールした後でも、アプリはこれらの設定を何らかの形で記憶していることに注意してください。デフォルトの動作に戻したい場合(アプリは前のウィンドウサイズで起動します)、_ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.Auto;_を1回呼び出して、すべてのコードを削除します。

更新

最新のWindows10ビルドでは、ApplicationView.GetForCurrentView().VisibleBoundsfullウィンドウサイズを有効ピクセルで返さなくなりました。したがって、それを計算するための新しい方法が必要になります。

DisplayInformation クラスは画面の解像度と倍率も提供するため、非常に簡単であることがわかります。

以下は更新されたコードです-

_public MainPage()
{
    MaximizeWindowOnLoad();

    InitializeComponent();

    void MaximizeWindowOnLoad()
    {
        var view = DisplayInformation.GetForCurrentView();

        // Get the screen resolution (APIs available from 14393 onward).
        var resolution = new Size(view.ScreenWidthInRawPixels, view.ScreenHeightInRawPixels);

        // Calculate the screen size in effective pixels. 
        // Note the height of the Windows Taskbar is ignored here since the app will only be given the maxium available size.
        var scale = view.ResolutionScale == ResolutionScale.Invalid ? 1 : view.RawPixelsPerViewPixel;
        var bounds = new Size(resolution.Width / scale, resolution.Height / scale);

        ApplicationView.PreferredLaunchViewSize = new Size(bounds.Width, bounds.Height);
        ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.PreferredLaunchViewSize;
    }
} 
_
8
Justin XL

Justinsのコードで期待どおりに機能するこの1つのライナーがありますが、何らかの理由で、Justinsの回答を使用すると、ウィンドウが最大化されませんでした...しかし、最大化するように変更しましたが、流暢なデザインがすべて失われましたAcrylicやRevealHighliteなど...

そこで私は、流暢なデザインの原則をすべて満足させるこの1つのライナーを思いつきました。

ApplicationView.GetForCurrentView().TryEnterFullScreenMode();

注意事項:

Justinsの回答を試しましたが、initializeComponent()の直後に呼び出したMaximizeWindowOnLoad()の彼のメソッドを使用しています。

完全な概要:

public class()
        {     
            this.InitializeComponent();
            MaximizeWindowOnLoad();   
        }

private static void MaximizeWindowOnLoad()
        { 
           ApplicationView.GetForCurrentView().TryEnterFullScreenMode();
        }
0
James Heffer