Silverlight控件樣式相關(guān)技巧應(yīng)用解析
Silverlight開發(fā)工具是由微軟公司推出的一款專門應(yīng)用于圖形及多媒體操作的輔助工具。對(duì)于開發(fā)人員來(lái)說(shuō),使用它可以輕松的實(shí)現(xiàn)各種以前難以實(shí)現(xiàn)的視覺(jué)效果。Silverlight控件樣式都具有MS為我們賦予的默認(rèn)樣式,雖然這個(gè)樣式也不怎么難看,但任何產(chǎn)品都很少用這個(gè)默認(rèn)的樣式去做***的呈現(xiàn),所以我們就需要對(duì)其進(jìn)行修改。#t#
首先,根據(jù)我的了解,我想到的改變控件默認(rèn)樣式的方法有:一、直接在控件本身上寫樣式;二、定義一個(gè)公共的樣式標(biāo),就像CSS一樣;三、運(yùn)行時(shí)樣式,前面兩個(gè)的樣式定義好以后就生效了,而運(yùn)行時(shí)樣式,只有在程序運(yùn)行的某一個(gè)階段才會(huì)生效。
***個(gè)方法很簡(jiǎn)單,我們只需要在XAML中加入希望的樣式,或者通過(guò)Expression Blend在右側(cè)屬性中進(jìn)行修改就可以了。
當(dāng)然,我們?nèi)匀豢梢酝ㄟ^(guò)編寫代碼來(lái)實(shí)現(xiàn)動(dòng)態(tài)的控制控件的樣式。
第二個(gè)Silverlight控件樣式的改變方法就是通過(guò)編輯外部的樣式來(lái)實(shí)現(xiàn)改變的目的。這個(gè)方法在參考資料[1]中有詳細(xì)的描述。
這里,補(bǔ)充一點(diǎn)定義樣式的時(shí)候關(guān)于位置的定義,定義在程序級(jí)別 Application ,會(huì)將樣式寫在 App.xaml 中,如果定義在本文檔的話,會(huì)在頁(yè)面的上方寫入。個(gè)人理解就和CSS的文檔內(nèi)寫入和外部樣式文件類同。
當(dāng)我們寫入 Application 時(shí),標(biāo)簽是這樣: < Application.Resources>
當(dāng)我們寫入 Document 時(shí), 標(biāo)簽是這樣:< UserControl.Resources>
關(guān)于Silverlight控件樣式更多的內(nèi)容,可以在MSDN的資料中看到[2]。
第三個(gè)方法我是在MSDN上看到的,貌似很強(qiáng)大,因?yàn)?ldquo;屬性設(shè)置和樣式可以更改控件外觀的某些方面,但應(yīng)用新模板可以完全更改控件的外觀。盡管模板不能更改控件類型的方法和事件,但它可以更改控件的外觀,具體取決于不同的狀態(tài),如按下或禁用。使用 XAML 可以定義和設(shè)置控件的模板。每個(gè)控件都有一個(gè)可以替換為自定義模板的默認(rèn)模板。”。 這就是通過(guò) ControlTemplate 來(lái)改變控件的外觀。
Cotrol Template 的設(shè)置有三種方式:
將 Template 本地設(shè)置成內(nèi)聯(lián)定義的 ControlTemplate;
將 Template 本地設(shè)置成對(duì)定義資源的 ControlTemplate 的引用;
用 Style 設(shè)置 Template 和 定義 ControlTemplate;
下面分別是三種Silverlight控件樣式改變方式的定義方法:
- < Button Content="Button1">
- < Button.Template>
- < ControlTemplate TargetType="Button">
- < !--Define the ControlTemplate here.-->
- < /ControlTemplate>
- < /Button.Template>
- < /Button>
- < StackPanel>
- < StackPanel.Resources>
- < ControlTemplate TargetType="Button"
x:Key="newTemplate">- < !--Define the ControlTemplate here.-->
- < /ControlTemplate>
- < /StackPanel.Resources>
- < Button Template="{StaticResource
newTemplate}" Content="Button1"/>- < /StackPanel>
- < StackPanel>
- < StackPanel.Resources>
- < Style TargetType="Button"
x:Key="newTemplate">- < Setter Property="Template">
- < Setter.Value>
- < ControlTemplate TargetType="Button">
- < !--Define the ControlTemplate here.-->
- < /ControlTemplate>
- < /Setter.Value>
- < /Setter>
- < /Style>
- < /StackPanel.Resources>
- < Button Style="{StaticResource
newTemplate}" Content="Button1"/>- < /StackPanel>