這節來講一下XAML中的屬性元素,標記擴充套件,和註釋。
屬性元素
一般的,我們想要對一個標籤的屬性賦值,可以直接在標籤內部鍵入屬性名給其賦值,如我們給button的Content屬性賦值:
<Button Content="I am Button" />
或者我們在後臺通過標籤的Name找到這個標籤,用程式碼為其賦值。
屬性元素則是為標籤屬性賦值的第三種方法。
顧名思義,屬性元素是以元素的形式來表達一個標籤的屬性,它的語法如下:
<tag>
<tag.property>
value
</tag.property>
</tag>
上方給button的Content賦值的程式碼就可以改為以下形式:
<Button>
<Button.Content>
I am button
</Button.Content>
</Button>
我們前幾節講到,標籤有非空和空標籤之分,非空標籤是可以有自己的內容的標籤,所以我們為標籤的內容賦值時,是可以省略屬性元素的,以上程式碼就可以簡化為:
<Button> I am button</Button>
系統會預設將“I am button” 賦值給Content,只有內容可以這麼做,其它的屬性若要使用屬性元素賦值都是需要顯示宣告的。
你可能會疑問,屬性標籤看起來讓我們的程式碼變得複雜了,當然,如果給元素的屬性賦一些簡單的值,我們不需要用屬性元素,就像寬,高這樣的屬性,我們直接在元素內部賦值要簡單的多,但是當我們遇到一些複雜的賦值情況,屬性元素的優勢就顯示出來了,再拿button距離,我想讓button的內容是一個圖示加文字,這時候,顯然在屬性內部直接賦值是無法做到了,我們要麼在後臺使用程式碼,要麼就需要用屬性元素了,請看例項:
<Button> <WrapPanel> <materialDesign:PackIcon Width="16" Height="16" Margin="0 0 5 0" VerticalAlignment="Center" Foreground="White" Kind="Logout" /> <TextBlock TextWrapping="Wrap" Text="退出登入" FontSize="15" VerticalAlignment="Center" /> </WrapPanel> </Button>
效果如下:
在button內部放了一個WrapPanel元素,在這種情況下,屬性元素是最簡單合適的,畢竟C#程式碼是用來寫邏輯的,不應過多涉及UI的編寫。
標記擴充套件
標記擴充套件是xmal最特色的一個東西,它同樣是給屬性賦值的一種形式,但是標記擴充套件正如它的名字一樣,是對屬性賦值的擴充套件,它是我們後續要講的MVVM模式中控制元件和資料的橋樑。
標記擴充套件是由大括號括起來的一些內容組成的,請看下面的程式碼:
<TextBlock x:Name="text_show" Text="你好"/> <Button Width="50" Height="30" Content="{Binding Text,Source={x:Reference text_show}}"></Button>
上述程式碼中{Binding Text,Source={x:Reference text_show}}就是標記擴充套件,它使用Binding命令和Source命令將button的內容跟TextBlock的Text屬性繫結了起來。當我們更改TextBlock的Text屬性的值的時候,Button按鈕的值也會變,程式執行如下:
後續的MVVM章節,我們會講控制元件的值與VM頁面中的屬性繫結,就是依賴標記擴充套件這個語法。當我們改變VM屬性值時,前臺的控制元件值就會變,這就是WPF與眾不同的地方:資料驅動控制元件。初學者,可以先做了解,後續我們會持續接觸標記擴充套件,而且也只有在程式碼中才能更好的理解標記擴充套件的強大。
註釋
最後講一下xaml中的註釋。
使用<!-- 註釋內容 --> 來註釋一段xaml程式碼,但是需要注意一下幾點:
1.註釋只能出現在開始標籤和結束標籤之間,也就是隻能出現在內容區域
2.不能註釋標籤的屬性
3.不能巢狀使用註釋
本節到此結束...