电竞比分网-中国电竞赛事及体育赛事平台

分享

ASP.NET 主題(Themes)FAQ - 自由、創(chuàng)新、研究、探索 - 博客園

 昵稱1215334 2010-09-13

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、LabelTextBox 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)有指定SkinIdlabel自動(dòng)應(yīng)用缺省外觀,LabelSkinID設(shè)置為BoldLabelLabel控件應(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è)全局共享的主題theme1IIS 服務(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
 {
    get{ retrun "MyStyleSheetTheme"; }
 }

7、主題(Theme/Skin)資源

一組相當(dāng)不錯(cuò)的Theme,可以直接應(yīng)用的項(xiàng)目開(kāi)發(fā)中

    Theme預(yù)覽:http://www./SampleThemes/Default.aspx
    Theme下載:http://www./tools/Default.aspx

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多