|
1、主題是什么 主題由一組元素組成:外觀、級(jí)聯(lián)樣式表 (CSS)、圖像和其他資源。主題將至少包含外觀。主題是在網(wǎng)站或 Web 服務(wù)器上的特殊目錄中定義的。主題是一組Web Control的屬性設(shè)置的集合,提供一種簡(jiǎn)單的方法設(shè)置控件的樣式屬性。 · 主題只在Web Control中有效 · 母板頁(yè)(Master Page)上不能設(shè)置主題,但是主題可以在內(nèi)容頁(yè)面上設(shè)置 · 主題上設(shè)置的Web Control的樣式覆蓋頁(yè)面上設(shè)置的樣式 · 如果在頁(yè)面上設(shè)置EnableTheming="false",主題無(wú)效 · 要在頁(yè)面中動(dòng)態(tài)設(shè)置主題,必須在頁(yè)面生命周期Page_Preinit事件之前 · 主題包括.skin和.css文件 2、.skin是什么文件 .skin是外觀文件,它包含各個(gè)控件(例如,Button、Label、TextBox 或 Calendar 控件)的屬性設(shè)置。控件外觀設(shè)置類似于控件標(biāo)記本身,但只包含您要作為主題的一部分來(lái)設(shè)置的屬性。例如,下面是 Button 控件的控件外觀: <asp:button runat="server" BackColor="lightblue" ForeColor="black" /> 在 theme 文件夾中創(chuàng)建 .skin 文件。一個(gè) .skin 文件可以包含一個(gè)或多個(gè)控件類型的一個(gè)或多個(gè)控件外觀??梢詾槊總€(gè)控件在單獨(dú)的文件中定義外觀,也可以在一個(gè)文件中定義所有主題的外觀。有兩種類型的控件外觀 -“默認(rèn)外觀”和“已命名外觀”: · 當(dāng)向頁(yè)應(yīng)用主題時(shí),默認(rèn)外觀自動(dòng)應(yīng)用于同一類型的所有控件。如果控件外觀沒(méi)有 SkinID 屬性,則是默認(rèn)外觀。例如,如果為 Calendar 控件創(chuàng)建一個(gè)默認(rèn)外觀,則該控件外觀適用于使用本主題的頁(yè)面上的所有 Calendar 控件。(默認(rèn)外觀嚴(yán)格按控件類型來(lái)匹配,因此 Button 控件外觀適用于所有 Button 控件,但不適用于 LinkButton 控件或從 Button 對(duì)象派生的控件。) · 已命名外觀是設(shè)置了 SkinID 屬性的控件外觀。已命名外觀不會(huì)自動(dòng)按類型應(yīng)用于控件。而應(yīng)當(dāng)通過(guò)設(shè)置控件的 SkinID 屬性將已命名外觀顯式應(yīng)用于控件。通過(guò)創(chuàng)建已命名外觀,可以為應(yīng)用程序中同一控件的不同實(shí)例設(shè)置不同的外觀。 3、如何為相同控件定義不同的Skin 使用SkinID為控件定義不同的skin,例如 <asp:Label runat=server Text="ThemedLabel" BackColor="Red" /> -label的缺省外觀 <asp:Label runat=server SkinId="BoldLabel" Text="ThemedLabel_WithSkinId" BackColor="Blue" Font-Bold="true" /> - 命名為BoldLabel 的Label外觀 因此頁(yè)面沒(méi)有指定SkinId的label自動(dòng)應(yīng)用缺省外觀,Label的SkinID設(shè)置為BoldLabel的Label控件應(yīng)用BoldLabel外觀 4、如何組織主題文件內(nèi)容 Theme文件下可以包含多個(gè).Skin文件,所以可以多種方式組織你的主題文件,所有的主題文件在應(yīng)用于頁(yè)面之前會(huì)合并。 · 一個(gè).skin文件包含所有的控件的外觀定義 · 每個(gè)控件一個(gè).skin文件 · 相同SkinID的控件放在一個(gè).skin文件中 5、有沒(méi)有辦法定義好的Theme文件在多個(gè)程序中共享 服務(wù)器上的任何網(wǎng)站以及任何網(wǎng)站中的任何頁(yè)面都可以引用全局主題,使用全局的主題可以在各個(gè)應(yīng)用程序之間共享,例如你想創(chuàng)建一個(gè)全局共享的主題theme1。IIS 服務(wù)器上的全局主題放置位置類似于 \Inetpub\wwwroot\aspnet_client\system_web\v2.0.xxxxx\Themes\Theme1 應(yīng)用程序級(jí)別的主題會(huì)覆蓋全局的主題,例如你在應(yīng)用程序中也定義了Theme1的主題,那么在應(yīng)用程序級(jí)的Theme1主題將覆蓋全局的主題Theme1 6、StyleSheetTheme是什么 主題還可以包含級(jí)聯(lián)樣式表(.css 文件)。將 .css 文件放在主題目錄中時(shí),樣式表自動(dòng)作為主題的一部分應(yīng)用。使用文件擴(kuò)展名 .css 在主題文件夾中定義樣式表。設(shè)置頁(yè)面的 StyleSheetTheme 屬性將主題作為樣式表主題來(lái)應(yīng)用。如果您希望能夠設(shè)置頁(yè)面上的各個(gè)控件的屬性,同時(shí)仍然對(duì)整體外觀應(yīng)用主題,則可以將主題作為樣式表主題來(lái)應(yīng)用。EnableTheming="false"情況下StyleSheetTheme仍然有效。通過(guò)重寫(xiě)屬性StyleSheetTheme來(lái)動(dòng)態(tài)修改頁(yè)面上的主題樣式 public override string StyleSheetTheme 7、主題(Theme/Skin)資源 一組相當(dāng)不錯(cuò)的Theme,可以直接應(yīng)用的項(xiàng)目開(kāi)發(fā)中 Theme預(yù)覽:http://www./SampleThemes/Default.aspx |
|
|