Silverlight中的Button控件的兩大特殊屬性
開(kāi)始介紹Content屬性之前,請(qǐng)大家記住以下繼承樹(shù):
- Control(abstract)
- ContentControl
- Frame
- PhoneApplicationFrame
- UserControl
- Page
- PhoneApplicationPage
注意ContentControl中Content屬性是一個(gè)object對(duì)象!
在Silverlight中Button從ContentControl派生而來(lái),間接從Control派生而來(lái),因?yàn)閷傩岳^承的原 因,Button控件具有ContentControl控件的Content屬性,其中Content屬性是object對(duì)象,所以我們可以通過(guò)以下代碼 對(duì)Button控件內(nèi)容進(jìn)行定義:
- <Button>
- <Button.Content>
- Click this Button!
- <Button.Content>
- <Button>
從表面上上述代碼沒(méi)錯(cuò),但是在silverlight中不允許這樣,另外凡是從ContentControl控件派生而來(lái)的控件,其Content屬性元素標(biāo)記可忽略,所以更改后的代碼如下:
- xmlns:system="clr-namespace;assembly=mscorlib"
- <Button>
- <system:String>Click this Button</system:String>
- <Button>
如果你不喜歡Button控件只顯示普遍的文本內(nèi)容,你也可以設(shè)置其Content屬性?xún)?nèi)容為其它元素,但是該元素必須為FrameworkElement派生對(duì)象。例如設(shè)置Button控件的Content屬性?xún)?nèi)容為一張圖片:
- <Button>
- <Image Source="***.png"
- Stretch="none"/>
- </Button>
由于Button控件是ContentControl派生元素,故Button.Content屬性元素語(yǔ)法形式可省略......
另外也可以設(shè)置Buton控件內(nèi)的文本特殊的格式,例如以下代碼設(shè)置了斜體的文本內(nèi)容:
- <Button>
- <TextBlock>
- <Run FontStyle="Italic">Click Me!</Run>
- <TextBlock>
- <Button>
如 果想設(shè)置Button控件的Content屬性?xún)?nèi)容為含漸變畫(huà)刷的橢圓,我們就要用到ContentTemplate屬性了;因?yàn)槿缟衔乃荆绻朐O(shè)置 Button控件的Content屬性?xún)?nèi)容為非文本內(nèi)容,就要設(shè)置其Content屬性?xún)?nèi)容為FrameworkElement類(lèi)派生元素,而這里為含漸 變畫(huà)刷的橢圓,而漸變畫(huà)刷不是FrameworkElement派生元素,所以就要控制Button控件的ContentTemplate內(nèi)容模板 了.....
相關(guān)XAML代碼為:
- <Button>
- <Button.Content>
- <RadialGradientBrush>
- <GradientStop Offset="0“ Color="Blue"/>
- <GradientStop Offset="1" Color="AliceBlue"/>
- </RadialGradientBrush>
- </Button.Content>
- <Button.ContentTemplate>
- <DataTemplate>
- <Elipse Width="100"
- Height="100"
- Fill="{Binding}"/>
- </DataTemplate>
- </Button.ContentTemplate>
- </Button>
顯示結(jié)果為:

上 述XAML代碼中有一個(gè)特殊的Binding語(yǔ)法標(biāo)記,既沒(méi)有設(shè)置Source,也沒(méi)有設(shè)置ElementName或Path屬性,只有 “{Binding}“,這表示綁定內(nèi)容為上述漸變畫(huà)刷;上述代碼實(shí)際上還改變了該Button控件的一部分視覺(jué)樹(shù),其標(biāo)準(zhǔn)Button控件的視覺(jué)樹(shù)為一 下形式:

而這里經(jīng)過(guò)我們對(duì)ContentTemplate進(jìn)行設(shè)置,該控件視覺(jué)樹(shù)已經(jīng)變成以下形式:

Button控件的ContentTemplate屬性值為DataTemplate類(lèi)型,對(duì)DataTemplate進(jìn)行設(shè)置可以改變控件的一部分視覺(jué)樹(shù)!
原文:http://www.cnblogs.com/YueHeiZS/archive/2011/12/27/2304126.html
【編輯推薦】





















