UWP 開發初階 Chapter 3 - 常用 XAML 基礎控制元件及其相應常用屬性介紹

weixin_33924312發表於2018-07-25

正文

上一篇介紹了Grid和StackPanel兩種容器,其中Grid可以分行又分列,而StackPanel在某些特殊情況下避免了很多麻煩,可以直接將控制元件推疊起來。

好啦!今天我們講一講一些常用的,基礎的XAML控制元件和常用屬性!

  1. TextBlock

這是用於顯示文字的,學c和cpp等等的用控制檯的朋友肯定都知道,那是直接console裡面輸出就行了。但到了視覺化軟體開發可就沒那麼簡單了,我們就需要TextBlock

語法如下:

效果如下:

✨其中,Text裡面就是你要它顯示的文字,而Foreground裡面是你字的顏色,FontSize是你的字型大小,FontWeight則是加粗等等字型的處理。TextWrapping是用來包裹你的文字的,啥叫包裹呢?

舉個栗子? 如果你的文字很長,而使用者將你軟體的視窗調的比較窄,而你又沒設定TextWrapping,則會出現如下圖的效果:

後面多出來的文字沒法顯示了!

那這時候TextWrapping=“Wrap”的作用就出來啦!

如下圖的效果:

✨除此之外,TextBlock還有很多妙用!

比如你想顯示一個圖案,怎麼辦呢?

這時候開啟我們第一篇提到的開發輔助軟體:字元對映表,下圖這個:

開啟後在左側邊欄內找到Segoe MDL2 Assets,如下圖所示:

這其實就是一種字型,微軟當年uwp欽定字型#(受虐滑稽)當然你喜歡哪個字型就用哪個#(受虐滑稽)

然後我要找我自己想要的圖案了,比如我想要找個表示主頁的按鈕!我們在那個軟體中點選我們想要的圖示,如下圖:

這時候看到XAML轉移程式碼,複製下來。(下面兩種程式碼也可以用來寫圖案,今後有機會再提)。然後我們來到vs中,如下圖這麼寫:

其實注意了,就兩處改動,其中Text的那個property改為剛剛複製的XAML轉義符,然後FontFamily寫Segoe MDL2 Assets。其實FontFamily表示的就是字型,裡面填上你剛才使用的字型即可!

  1. TextBox

這就是使用者的文字輸入框,語法如下:

效果如下:

看!這就是一個使用者可以輸入文字的文字框,其中PlaceholderText指的是使用者還沒輸入東西的時候,裡面預先顯示的文字。

  1. Button

顧名思義啦,按鈕啦!程式碼如下:

效果如下:

✨這時候button裡面顯示的文字不再是Text屬性,而是Content屬性,foreground就自然是字的顏色啦,background就是按鈕的背景顏色!至於如何處理按鈕點選事件,我們下次再提。

PS:Button內也可以顯示圖案,方法和TextBlock裡介紹的有異曲同工之妙,大家去試試吧!

好啦!幾個最為基礎的控制元件都介紹完了!

其實XAML提供了很多控制元件!

大家都可以在前言中提到的XAML Control Gallery中瀏覽一下各種控制元件的樣子和程式碼以及一些常用屬性。

比如ListView,GridView,Image,MediaElement,Flyout等等等等,其實都是我們常用的。

  1. 如何規定控制元件在Grid中的位置!

上篇提到了Grid可以分行分列,那麼我們怎麼規定控制元件在哪兒呢?

其實很簡單,有兩個屬性叫做Grid.Column和Grid.Row,分別表示列和行的位置。

如下圖:

這裡面我就把這個button放在了Grid的第三行和第二列!為什麼是第三行第二列,而不是第二行第一列?這和邏輯語言裡面一樣,序號是從0開始的,0表示第一行或第一列,一次類推。如果你不寫明幾行幾列,XAML編譯器會預設把你的控制元件都放在第一行第一列。

✨如何使得控制元件跨行或列?

XAML還有一個屬性叫做Grid.RowSpan和Grid.Column Span,分別表示跨幾行和跨幾列。

舉個栗子?:

這裡面這個button就放在第三行第二列的同時,跨兩行,跨三列!對!RowSpan和ColumnSpan是從1開始的,如果你不設定,預設是隻跨1行1列,也就是說它只佔用它所固定的位置。RowSpan為3則表示跨3行,以此類推。

✨你可以所有XAML控制元件設定在Grid中的位置(前提是你有先設定了Grid)

  1. 如何設定控制元件的對齊方式?

這時候,便引入XAML中的另一個屬性,叫做HorizontalAlignment和VerticalAlignment,分別表示水平方向的對齊方式,和垂直方向的對齊方式。

舉個?:

這個時候,我便把這個button水平方向上居中,垂直方向上位於頂部。我們也可以放在底部等等。

總結

別看我說這些都是簡單控制元件,其實就比如TextBlock還有很多用法,我只是沒有一一列舉,大家感興趣的話都可以自己摸索,畢竟vs宇宙第一IDE不是吹的,寫XAML就跟做選擇題一樣,屬性全都給你列出來!大家可以一個一個地去試試!

好啦謝謝大家!如有不懂或疑問,下方評論哈!

下篇見!

相關文章