記事ディレクトリ
序文
最近、MAUI+Blazor の開発を勉強していて、ネイティブのタイトル バーが非常に醜いという問題を発見しました。
関連記事
MAUI デスクトップのタイトルバーの設定とウィンドウの調整
MAUI Windows タイトルバーを完全に非表示にする方法は? #15142
MAUI タイトルバーを削除してウィンドウサイズを修正するにはどうすればよいですか?
.NET MAUI: シェルを使用するときにナビゲーション バー/タイトル バーを非表示にする方法はありますか?
コード
#if WINDOWS
builder.ConfigureLifecycleEvents(events =>
{
// Make sure to add "using Microsoft.Maui.LifecycleEvents;" in the top of the file
events.AddWindows(windowsLifecycleBuilder =>
{
windowsLifecycleBuilder.OnWindowCreated(window =>
{
window.ExtendsContentIntoTitleBar = false;
var handle = WinRT.Interop.WindowNative.GetWindowHandle(window);
var id = Microsoft.UI.Win32Interop.GetWindowIdFromWindow(handle);
var appWindow = Microsoft.UI.Windowing.AppWindow.GetFromWindowId(id);
if (appWindow.Presenter is OverlappedPresenter pre)
{
pre.IsMaximizable = false;
pre.IsResizable = false;
pre.IsMinimizable = false;
pre.SetBorderAndTitleBar(false, false);
}
});
});
});
#endif
境界線が正常に削除されました。
質問
しかし、ウィンドウ全体をドラッグできないという問題があります。
後で、Windows プラットフォームに特にこの機能がある理由がわかりました。それは、それがカプセル化されていたからです。
- ウィンドウのドラッグ
- ウィンドウズーム
- 窓を隠した
- 窓を閉めて
これら 4 つの関数ですが、タイトル バーを非表示にすると、これら 4 つの関数を書き換える必要があります。特別なニーズがある場合は、カスタマイズする必要があります。Blazor を使用して記述する場合、これら 4 つの関数を書き直す必要があります。しばらくしたら修正方法を検討します。
それを解決する必要があるのでしょうか?
実際、タイトル バーを非常に複雑に変更する場合を除き、これを解決する必要はあまりありません。そうでない場合は、解決する必要はありません。MAUI+Blazor の開発は高速性を重視しているためです。私のビュー レイヤーは Blazor を使用して表示し、間接的に C# コードを呼び出します。ビュー ロジックは Blazor 自体によって処理されます。タイトル バーを本当にカスタマイズしたい場合は、タイトル バーを非表示にして、最初からやり直してください。