Windows ストアの一部のアプリには、タイトルバーの最小化、最大化、閉じるボタンに加えて、フルスクリーン ボタンがあります。このボタンは、フルスクリーンがアクティブな場合、すべてのアプリのタイトルバーにあるフルスクリーン終了ボタンに似ています。それはシステム コントロールですか? C# ユニバーサル アプリでどのように使用できますか?
3 に答える
Window.SetTitleBar
目的の動作を実現するには、メソッドを使用する必要があります。したがって、いくつかの手順を実行する必要があります。
まず、ビューをタイトル バーに拡張できるようにします。タイトル バーの左側の部分しか設定できないことに注意してください。最小化、最大化、および閉じるボタンは引き続き表示されます。
CoreApplication.GetCurrentView().TitleBar.ExtendViewIntoTitleBar = true;
それを設定したら、次のようにWindow.SetTitleBar
メソッドを呼び出しUIElement
ます。
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 による拡張ガイド (このユースケースをさらにうまく調整する優れた 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
また、カスタム ボタンを使用して全画面表示を終了すると、これらの 3 つのシステム ボタンは、ダブルクリックしTitleBar
て画面を最大化するまで機能しなくなることがわかりました。これはバグである可能性があります。幸いなことに、画面が全画面モードの場合、最大化ボタンは全画面終了ボタンに置き換えられるため、カスタム ボタンを非表示にして、システムに終了を処理させることができます。
全画面モードの 3 種類に区別できます。 1. 全画面モードの開始と終了。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);
}
}