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