主題和皮膚的內容 前面的部分已經講過
皮膚文件包含了控件屬性值的定義
它可以應用在程序的同種類型的控件上
這一部分討論添加到皮膚文件或主題的哪些內容是有效的
Themable(可應用主題的)屬性 皮膚文件中的控件定義只能包含屬性的值
它們都被標記為Themeable(可應用主題)
每個控件都可以通過在屬性上使用ThemeableAttribute來定義一組屬性
把不可應用主題的屬性添加到皮膚文件中會導致錯誤出現
某個控件本身可能被主題排除了
例如數據源控件就不可應用主題
在默認情況下
任何控件的ID屬性是不能應用主題的
除非控件有特定的要求
否則在默認情況下
它的所有屬性都是可以應用主題的
你可以參照
NET框架組件參考文檔來確認控件的屬性是否可以應用主題
在主題中使用CSS 通過把級聯樣式表(CSS)放置在命名主題的子目錄中
你可以給該主題添加CSS
如果頁面包含了<head runat=
server
/>控件定義
那麼該CSS樣式表將應用於所有使用了該主題的頁面
你可以根據需要重命名CSS文件
只要它的擴展名是
css
一個主題可以包含多個CSS文件
當頁面中包含了CSS文件的引用(在<head/>元素中使用<link rel=
stylesheet
href=
/>標記)的時候
主題中的CSS文件都在頁面的樣式表後面應用
在主題中使用圖像 主題中也可以包含圖像
它們是皮膚文件中的控件定義引用的
皮膚文件中的圖像引用必須使用主題目錄下的圖像文件夾的相對路徑
這樣皮膚文件和圖像才能輕易地隨應用程序遷移
在運行時
圖像的路徑會被重新定位
因此
對目標頁面中的控件來說
這個引用是相對的
下面的例子演示了一個包含圖像子目錄的主題
<%@ Page Language=VB Theme=MyTheme %>
<asp:Image ID=Image SkinID=Warning runat=server />
<asp:Label ID=Label runat=server Text=Hello /><br />
<asp:Image ID=Image SkinID=Warning runat=server />
<asp:Label ID=Label runat=server Text=Hello /><br />
<asp:Image ID=Image SkinID=Warning runat=server />
<asp:Label ID=Label runat=server Text=Hello /><br />
定制控件集合主題
你在皮膚文件中設置的大多數屬性都是一些簡單的值屬性例如FontNameWidth和 BackColor但是你也可以設置皮膚集合屬性皮膚集合屬性並非應用在目標控件的集合項的屬性上而是在使用主題或使用StyleSheetTheme合並集合的時候完全地替代集合
這對於某些包含樣式集合的集合屬性是有用處的例如TreeView控件的LevelStyles(層次樣式)屬性或Menu控件的LevelMenuItemStyles(菜單項樣式)LevelSubMenuItemStyles(子菜單項樣式)或LevelSelectedStyles(選中的樣式)屬性
TreeViewskin的內容
<asp:TreeView runat=server
FontNames=Verdana
ForeColor=Black
HoverNodeStyleFontUnderline=true
ShowExpandCollapse=false
NodeIndent=
>
<LevelStyles>
<asp:TreeNodeStyle ChildNodesPadding= FontBold FontSize=pt ForeColor=DarkGreen/>
<asp:TreeNodeStyle ChildNodesPadding= FontBold FontSize=pt />
<asp:TreeNodeStyle ChildNodesPadding= FontUnderLine FontSize=pt />
<asp:TreeNodeStyle FontSize=pt />
</LevelStyles>
</asp:TreeView>
[] [] [] [] [] [] [] [] []
From:http://tw.wingwit.com/Article/program/net/201311/15068.html