vs2005之主题与皮肤的学习
什么是皮膚?皮膚是應用到一個控件上的樣式信息,在vs2005中它的內容保存在.skin文件中,可以通過對皮膚用SkinID命名,然后控件在使用皮膚時,設置它的SkinID屬性來達到控制控件的樣式的目的.
什么是主題?皮膚的集合就是主題啦,保存在Themes子目錄中.
C# :
??? Protected void Page_PreInit(object sender, EventArgs e)
??? {
//在頁面放一按鈕提交,然后從Request對象里把提交的主題名稱theme取出來構成條件,賦值給page.Theme調用相應的主題文件就可以完成對整個頁面的樣式控制咯,要記得頁面重載一下
????? switch (Request.QueryString["theme"])
????? {
????????? case "Blue":
????????????? Page.Theme = "BlueTheme";
????????????? break;
????????? case "Pink":
????????????? Page.Theme = "PinkTheme";
????????????? break;
????? }
??? }
//知道了如何調用,然后就是在App_Themes文件夾下面制作n多套主題文件了。
還可以在Page_PreInit中改變SKinID的值來調用不同的皮膚
void Page_PreInit(object sender, EventArgs e)
??? {
????? Calendar1.SkinID = "MySkin";
??? }
…………………………………………下面是技術性比較強一點的說明 ……………………………………
1、主題是什么
??? 主題由一組元素組成:外觀、級聯樣式表 (CSS)、圖像和其他資源。主題將至少包含外觀。主題是在網站或 Web 服務器上的特殊目錄中定義的。主題是一組Web Control的屬性設置的集合,提供一種簡單的方法設置控件的樣式屬性。
·主題只在Web Control中有效
·母板頁(Master Page)上不能設置主題,但是主題可以在內容頁面上設置
·主題上設置的Web Control的樣式覆蓋頁面上設置的樣式
·如果在頁面上設置EnableTheming="false",主題無效
·要在頁面中動態設置主題,必須在頁面生命周期Page_Preinit事件之前
·主題包括.skin和.css文件
2、.skin是什么文件
.skin是外觀文件,它包含各個控件(例如,Button、Label、TextBox 或 Calendar 控件)的屬性設置。控件外觀設置類似于控件標記本身,但只包含您要作為主題的一部分來設置的屬性。例如,下面是 Button 控件的控件外觀:
<asp:button runat="server" BackColor="lightblue" ForeColor="black" />
在 theme 文件夾中創建 .skin 文件。一個 .skin 文件可以包含一個或多個控件類型的一個或多個控件外觀。可以為每個控件在單獨的文件中定義外觀,也可以在一個文件中定義所有主題的外觀。有兩種類型的控件外觀 -“默認外觀”和“已命名外觀”:
·當向頁應用主題時,默認外觀自動應用于同一類型的所有控件。如果控件外觀沒有 SkinID 屬性,則是默認外觀。例如,如果為 Calendar 控件創建一個默認外觀,則該控件外觀適用于使用本主題的頁面上的所有 Calendar 控件。(默認外觀嚴格按控件類型來匹配,因此 Button 控件外觀適用于所有 Button 控件,但不適用于 LinkButton 控件或從 Button 對象派生的控件。)
·已命名外觀是設置了 SkinID 屬性的控件外觀。已命名外觀不會自動按類型應用于控件。而應當通過設置控件的 SkinID 屬性將已命名外觀顯式應用于控件。通過創建已命名外觀,可以為應用程序中同一控件的不同實例設置不同的外觀。
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外觀
??? 因此頁面沒有指定SkinId的label自動應用缺省外觀,Label的SkinID設置為BoldLabel的Label控件應用BoldLabel外觀
4、如何組織主題文件內容
??? Theme文件下可以包含多個.Skin文件,所以可以多種方式組織你的主題文件,所有的主題文件在應用于頁面之前會合并。
·一個.skin文件包含所有的控件的外觀定義
·每個控件一個.skin文件
·相同SkinID的控件放在一個.skin文件中
5、有沒有辦法定義好的Theme文件在多個程序中共享
服務器上的任何網站以及任何網站中的任何頁面都可以引用全局主題,使用全局的主題可以在各個應用程序之間共享,例如你想創建一個全局共享的主題theme1。IIS 服務器上的全局主題放置位置類似于 \Inetpub\wwwroot\aspnet_client\system_web\v2.0.xxxxx\Themes\Theme1
應用程序級別的主題會覆蓋全局的主題,例如你在應用程序中也定義了Theme1的主題,那么在應用程序級的Theme1主題將覆蓋全局的主題Theme1
?
6、StyleSheetTheme是什么
??? 主題還可以包含級聯樣式表(.css 文件)。將 .css 文件放在主題目錄中時,樣式表自動作為主題的一部分應用。使用文件擴展名 .css 在主題文件夾中定義樣式表。設置頁面的 StyleSheetTheme 屬性將主題作為樣式表主題來應用。如果您希望能夠設置頁面上的各個控件的屬性,同時仍然對整體外觀應用主題,則可以將主題作為樣式表主題來應用。EnableTheming="false"情況下StyleSheetTheme仍然有效。通過重寫屬性StyleSheetTheme來動態修改頁面上的主題樣式
public override string StyleSheetTheme
{
???? get{ retrun "MyStyleSheetTheme"; }
}
7、主題(Theme/Skin)資源
一組相當不錯的Theme,可以直接應用的項目開發中
???? Theme預覽:http://www.dotnettreats.com/SampleThemes/Default.aspx
???? Theme下載:http://www.dotnettreats.com/tools/Default.aspx
轉載于:https://www.cnblogs.com/fmxyw/archive/2008/12/10/1351720.html
總結
以上是生活随笔為你收集整理的vs2005之主题与皮肤的学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#类型转换 (非原创)
- 下一篇: 培训是一种乐趣(3)