web-dev-qa-db-ja.com

Windowsユニバーサルアプリのフルスクリーンボタン

Windowsストアの一部のアプリには、タイトルバーの最小化、最大化、および閉じるボタンに加えて、フルスクリーンボタンがあります。このボタンは、フルスクリーンがアクティブな場合にすべてのアプリがタイトルバーに表示するフルスクリーン終了ボタンに似ています。それはシステムコントロールですか?C#ユニバーサルアプリでどのように使用できますか?

15
Joe300

目的の動作を実現するには、 Window.SetTitleBar メソッドを使用する必要があります。したがって、いくつかの手順を実行する必要があります。

まず、ビューをタイトルバーに拡張できるようにします。タイトルバーの左側しか設定できないことに注意してください。 最小化最大化および閉じるボタンは引き続き表示されます:

CoreApplication.GetCurrentView().TitleBar.ExtendViewIntoTitleBar = true;

それを設定した後、UIElementを使用してWindow.SetTitleBarメソッドを呼び出します。

Window.Current.SetTitleBar(myTitleBar);

myTitleBarは次のようになりますが、次のようになります。

<Border x:Name="myTitleBar">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="Auto" />
        </Grid.ColumnDefinitions>

        <!-- Title -->
        <TextBlock Grid.Column="0"
                   Text="..."/>

        <!-- Custom buttons attached to the right side -->
        <StackPanel Grid.Column="1"
                    Orientation="Horizontal">
            <Button x:Name="FullScreenButton"/>
            <!-- Use U+E740 FullScreen Icon for the button above -->
        </StackPanel>
    </Grid>
</Border

Marco Minervaによる拡張ガイド(このユースケースをさらに改善するNice XAMLの動作を含む)は、 ここ にあります。

5
Herdo

私はFullScreenModeTitleBarBehaviorを(FullScreenModeTitleコントロールと共に)作成しました。これはあなたが望むことをするかもしれません。

enter image description here

ビヘイビアはメインのPageにアタッチする必要があり、TitleBarの前景色と背景色を指定できます。より多くの色が必要な場合は、ビヘイビアにプロパティを追加するだけです。

それが機能する方法は、動作がContentPageからFulScreenModeTitleコントロールに移動することです。これは、基本的に、移動されたTitleBarでカスタムContentを構成します。

// Store the original main page content.
var mainPageContent = _mainPage.Content;
// Clear the content for now.
_mainPage.Content = null;

// Move the content of the main page to our title bar control.
_customTitleBar.SetPageContent(mainPageContent);
// Refill the content with our new title bar control.
_mainPage.Content = _customTitleBar;

完全なソースコードは、GitHubの ここ にあります。また、このソリューションは、MicrosoftのGitHubリポジトリからのこの特定の サンプル に触発されたことにも注意してください。


これまでに見つけたいくつかの問題

カスタムフルスクリーンモードボタン最小化ボタンの間にギャップがあることにすでに気付いているかもしれません。残念ながら、これ以上のスペースはシステムによって予約されているため、これ以上減らすことはできません(詳細については、SystemOverlayRightInsetを確認してください)。 カスタムボタンをこれ以上近づけると、ヒットテストが失敗し、クリックできなくなります。

また、カスタムボタンを使用して全画面を終了すると、TitleBarをダブルクリックして画面を最大化するまで、これら3つのシステムボタンが機能しなくなることがわかりました。これはバグである可能性があります。幸い、画面が全画面モードの場合、最大化ボタン全画面終了ボタンに置き換えられるため、カスタムボタンを非表示にすることができます。そしてシステムに出口を処理させます。

3
Justin XL

フルスクリーンモード1の3種類に区別できます。フルスクリーンモードの開始と終了。 2.フルスクリーンモードでの変更への対応。 3.フルスクリーンモードで起動します。

このURLを参照できます https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/FullScreenMode

var view = ApplicationView.GetForCurrentView();
        if (view.IsFullScreenMode)
        {
            view.ExitFullScreenMode();
            rootPage.NotifyUser("Exiting full screen mode", NotifyType.StatusMessage);
            // The SizeChanged event will be raised when the exit from full screen mode is complete.
        }
        else
        {
            if (view.TryEnterFullScreenMode())
            {
                rootPage.NotifyUser("Entering full screen mode", NotifyType.StatusMessage);
                // The SizeChanged event will be raised when the entry to full screen mode is complete.
            }
            else
            {
                rootPage.NotifyUser("Failed to enter full screen mode", NotifyType.ErrorMessage);
            }
        }
2
Eng Soon Cheah