Windowsストアの一部のアプリには、タイトルバーの最小化、最大化、および閉じるボタンに加えて、フルスクリーンボタンがあります。このボタンは、フルスクリーンがアクティブな場合にすべてのアプリがタイトルバーに表示するフルスクリーン終了ボタンに似ています。それはシステムコントロールですか?C#ユニバーサルアプリでどのように使用できますか?
目的の動作を実現するには、 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の動作を含む)は、 ここ にあります。
私はFullScreenModeTitleBarBehavior
を(FullScreenModeTitle
コントロールと共に)作成しました。これはあなたが望むことをするかもしれません。
ビヘイビアはメインのPage
にアタッチする必要があり、TitleBar
の前景色と背景色を指定できます。より多くの色が必要な場合は、ビヘイビアにプロパティを追加するだけです。
それが機能する方法は、動作がContent
をPage
から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つのシステムボタンが機能しなくなることがわかりました。これはバグである可能性があります。幸い、画面が全画面モードの場合、最大化ボタンは全画面終了ボタンに置き換えられるため、カスタムボタンを非表示にすることができます。そしてシステムに出口を処理させます。
フルスクリーンモード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);
}
}