文章目錄
- 前言
- 相關文章
- 代碼
- 問題
- 有必要解決嗎?
前言
最近在研究MAUI+Blazor開發,發現一個問題,原生的的標題欄實在是太丑了。
相關文章
MAUI桌面端標題欄設置和窗口調整
MAUI Windows How to completely hide the TitleBar? #15142
MAUI how to remove the Title Bar and fix the window size?
.NET MAUI: Is there a way to hide the Navigation Bar/Title Bar when using Shell?
代碼
#if WINDOWSbuilder.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平臺專門有這個東西了,原因就是因為他幫我們封裝了:
- 窗口拖動
- 窗口縮放
- 窗口隱藏
- 關閉窗口
這四個功能,如果我們隱藏了標題欄,那么我們就要重新寫一下這四個功能了。如果有特殊需求那就需要定制才行。如果我們用Blazor去寫,我們就要重新寫這四個功能。我過段時間研究一下怎么解決。
有必要解決嗎?
其實沒多大必要解決,除非你想把標題欄改的很復雜,不然沒必要這么做。因為MAUI+Blazor開發講究的就是一個快。我視圖層用Blazor去展示,然后間接調用C#代碼。視圖邏輯Blazor自己解決。真想定制標題欄就把標題欄隱藏了自己重新就行了。