主题和皮肤

ASP.NET 2.0中的主题功能:

它类似于CSS,可以给应用程序的页面应用样式、图形甚至CSS文件。

 
ASP.NET 页面应用主题的方法:

 
1.给Page指令添加Theme属性.
如:

<%@ Page Language="C#" Theme="SmokeAndGlass" %>
此方法只能为单一的ASP.NET 页面添加主题,其中SmokeAndGlass是已经定义好的主题文件名称。

 
2.通过Web.config指定主题。
如:


<?xml version="1.0" encoding="UTF-8" ?>

<configuration>
<sytem.web>
<pages theme="SmokeAndGlass" />
</system.web>
</configuration>


此方法可以把主题应用到应用程序的每一个页面。
应用主题的页面中的控件如果再设置样式的话,将被主题覆盖。

如:
<asp:Textbox ID="TextBox1" Runat="server" BackColor="#000000" ForeColor="#ffffff" />

如果给Textbox1所在的页面应用了主题,就看不到文本框的黑背景色和白色的文本了,因为这些修改会被主题覆盖。
那么如何让这些修改起作用呢?
可以利用控件的EnableTheming属性,设为false就可以了。
如:

<asp:Textbox ID="TextBox1" Runat="server" BackColor="#000000" ForeColor="#ffffff" EnableTheming="false" />

这样的话主题文件将在Textbox1上不起作用。


如果要禁用多个控件的主题,则可以把这些控件先放在一个容器里(比如:Panel等),然后把Panel的EnableTheming属性设置为False就可以了。

 
如果在Web.config文件中设置了主题,如何使单个ASP.NET页面不应用主题特性?
可以设置页面的EnableTheming属性,


<%@ Page Language="C#" EnableTheming="false" %>
即使把页面的EnableTheming属性设为False,从而禁用了页面的主题,仍可以把该页面上的某个控件的EnableTheming属性设为True,给它应用主题,

如下:
<asp:Textbox ID="TextBox1" Runat="server" BackColor="#000000" ForeColor="#ffffff" EnableTheming="true" Theme="Summer" />


StyleSheetTheme属性


它同Theme属性一样都是把主题应用到页面,不同的是,用StyleSheetTheme设置时,不会出现修改控件样式失效的情况,如下:
<%@ Page Language="C#" StyleSheetTheme="Summer" %>

这样的话,再去修改控件的样式,修改的样式将不会被主题覆盖。
<asp:Textbox ID="TextBox1" Runat="server" BackColor="#000000" ForeColor="#ffffff" />

如果有Page指令中用Theme属性,则修改失效。

 
皮肤一般包含在主题中,并且皮肤只能定义与服务器控件相关的样式(别的控件可以用CSS来控制)。

定义皮肤时,不能包手控件的ID属性。
在同一个皮肤文件中,可以设置同一控件的不同的皮肤,其中没有SkinID属性的皮肤将作为默认的皮肤。

posted @ 2010-07-14 17:15  Jack Tong  阅读(479)  评论(0编辑  收藏  举报