當前位置:
首頁 > 科技 > Win10 UWP開發技巧:充分利用標題欄空間

Win10 UWP開發技巧:充分利用標題欄空間

感謝IT之家網友 DotNet碼農的投稿

自從Windows成型開始,標題欄留給大家的印象,就是一個標題外加「三大金剛」——最小化,最大化和關閉,即使在UWP應用里,標題欄大多也只加上了一個後退按鈕。所以,在UWP應用里看到的標題欄一般是這樣的:

這樣的:

或者,這樣的:

看膩了嗎?我們來看一個與眾不同的標題欄:

在Pixiv UWP發布之初,就有不少UWP愛好者不止一次地詢問過我們開發社區:這樣的一個UWP標題欄是怎麼做出來的?控制項是怎麼被放入標題欄上的?怎麼讓被放了控制項的標題欄依然完成標題欄的功能?這篇教程就帶你手把手做出一個帶控制項的UWP標題欄。

原理解釋:

這種標題欄實際上是被擴展至標題欄區域的布局。我們只需要在這個頁面的構造函數里通知框架,我們需要把布局擴展至標題欄,框架就會去掉原來的標題欄,並把我們編寫的布局擴展填充至屬於標題欄的那一部分區域。我們還可以通知框架,我們自己編寫的布局裡,有哪一塊依然需要充當標題欄的功能(響應滑鼠的拖動、右擊和雙擊等標題欄操作),這樣框架就會將那一塊作標題欄處理。

啟動Visual Studio 2017,新建一個空白頁UWP工程(C#):

Win10 UWP開發技巧:充分利用標題欄空間

耐心等待解決方案創建完畢,你就會得到一個空白的UWP應用模板。在「解決方案管理器」里,雙擊打開MainPage.xaml,Visual Studio會載入一個XAML設計器。我們不需要這個可視化的設計器,直接把分割線拉到頂上,讓代碼區域佔滿整個Visual Studio工作區。下面是模板默認生成的代碼:

Win10 UWP開發技巧:充分利用標題欄空間

最外層的Page是這個頁面,中間的Grid是填滿這個頁面的網格狀布局。我們需要給這個Grid分出一個高為32像素的行,留給我們的標題欄。在Grid標籤里添加代碼,現在Grid標籤是這個樣子:

在Grid標籤里繼續添加代碼,以定義我們標題欄區域的布局,現在代碼看起來是這樣的:

Win10 UWP開發技巧:充分利用標題欄空間

中間那個方框內一個問號的那個字元,其實是Segoe MDL2字符集里,表示「後退」箭頭標誌的字元,可以在字元映射表裡找到。

我們執行這個東西,注意,編譯需要一定時間:

(那個黑色的條條是調試時才有的工具條,發布時並沒有這個條)

說好的標題欄呢?怎麼變成這個鬼樣子了?其實是因為,我們忘了通知框架擴展布局至標題欄了。關閉這個奇怪的窗口,回到設計模式,在XAML代碼窗口按下F7,調出C#代碼編輯器。我們在構造函數MainPage里添加代碼,讓它看起來是這個樣子:

Win10 UWP開發技巧:充分利用標題欄空間

考慮到CoreApplication類所在的名稱空間默認沒有被引用,所以在最前面引用名稱空間:

再次執行應用,標題欄終於變成了我們定義的樣子:

挺難看的,是吧。不僅難看,它甚至還沒有功能:後退按鈕不能點,框框也不能輸入東西。這是因為,我們沒有通知框架哪一部分是「真正」的標題欄,所以框架默認把這一整片區域當成了標題欄,從而,為了響應標題欄操作的覆蓋層蓋住了我們的控制項,我們也就不能和那些控制項交互了。在MainPage構造函數里繼續添加代碼,通知框架哪部分是真正的標題欄:

Win10 UWP開發技巧:充分利用標題欄空間

再次執行應用,你會發現,執行狀況完全符合我們的預期:

你得到了一個自定義的標題欄。這個例子里做出的標題欄很醜,但是鑒於這是布局的一部分,所以你能很輕易地把它做成任何一個樣子,只要注意:標題欄的高度一般是32像素,按鈕默認寬度是48像素,右邊「三大金剛」按鈕區域最好不要放東西(因為會被那幾個鍵擋住)。還有一點,一旦你將布局擴展至標題欄,你就不能用標準的方法給標題欄添加後退按鈕,你必須自己實現它。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 IT之家 的精彩文章:

手機App驗證器正式啟用:微軟賬號登錄不需密碼
同迎三大新品:一文看懂聯想ThinkPad X1新品筆電
小米6手機高清渲染圖徹底泄露:3種顏色、變焦雙攝、四曲面陶瓷/玻璃
蘋果新專利獲批准:可捲曲屏幕智能手機未來可期
微邊框、超續航:聯想國行新ThinkPad X1 Carbon發布

TAG:IT之家 |

您可能感興趣

CW超級英雄劇集四劇聯動確定標題為Crisis on Earth-X
《Fate/stay night HF》劇場版第2章標題公開 明年上映
標題橫幅字體Gilbert設計
標題:ENJOY X NEVERGIVEUP?我們準備做一次慈善,等待你的加入
分享兩枚C4D製作標題字的技巧教學
《Fate/stay night》HF劇場版第二章標題公布 明年上映
《IDOLiSH7》前輩組合外傳小說+漫畫企劃標題公開
標題怎能缺iPhone
《FSN HF》劇場版動畫第二章標題公布 2018年上映
FGO 1.5 部第二章正式標題公開夏天開啟泳裝活動
Photoshop金色大氣的周年慶標題字體設計
《銀魂》最後的遊戲標題發表,《銀魂亂舞》不知何時登陸PS4&PSV
《妖精的尾巴》劇場版副標題「DRGON CRY」公布 17年春季上映
原標題:96B這次能碾壓T72嗎?中俄都在備戰坦克兩項賽
《出包王女Darkness》將更換標題繼續連載
Facebook 動態時報更新「誘騙點擊標題」偵測,也包括中文
Facebook 進一步打擊視頻標題黨內容
比村奇石&鴨志田一合作動畫標題確定為「Just Because!」!
《復聯3》發預告片《復聯4》公布標題……一切都在SDCC