.Net 2.0 换肤功能

    .Net 2.0的出炉无疑是我们开发人员的又一福音。在.Net 2.0中的新特性吸引了无数人的眼球。其中.Net 2.0的换肤功能更是使得我们在开发一些Web应用程序的周期大大缩短,今天,我们就来一起学习和探讨下.Net 2.0的换肤功能。
    首先,我们新建一个Web项目,右健添加一个Skin文件(我们取名为Default),在Skin文件中我们可以定制我们需要控件的样式了。大家可以注意到,新建的Skin文件位于程序根目录下的App_Themes文件夹下。
    如:我们定制Label控件的样式为: 字体颜色为红色

                <asp:Label ForeColor="Red" runat="server" />
    那么我们该如何使用定制好的Skin文件呢?有两种方法:

    其一:在该页面的Html代码中在头文件中加入Theme = “***(Skin文件名)”      

                        <%@ Page Language="C#" Theme="Default" %>

    其二:在页面的代码中加入Page_PreInit()方法,如下:

 

        protected void Page_PreInit(object sender, EventArgs e)
        {
              
this.Theme = “Default”;     //Default为Skin文件名
        }

    其三:在Web.Config中配置(注:该方式一旦设置后所有该Web应用程序的页面都将使用该Skin) 

         在web.config中的 <system.web> 节点下加上句 <pages theme ="Default"/>

    这样,我们就可以将名为Default的Skin皮肤文件中设定的样式应用于该页面了。写到这里,心里肯定有这样一个疑问:我可以在Skin皮肤文件中对某一控件的样式设定多个吗?答案是肯定的,我们只要在Skin文件中加入SkinID属性来标识。如果不指定SkinID则使用默认的。(如将上面的字体设置为绿色)

            <asp:Label SkinID="LabelStyle1" ForeColor="Green" runat="server" />

    在页面中我们引入Default的Skin文件,如果在Label控件中我们想使用绿色字体,则我们只需要再Label控件中加入SkinID=” LabelStyle1”即可,否则则默认为红色字体。

    下面,我们回到正题“怎么实现Web应用程序的换肤”上来。通过上面的介绍大家应该感到要实现换肤并不难,我们做好多套皮肤样式后,我们写一个页面基类,在基类中我们在Page_PreInit()事件中读入皮肤样式, 如果没有则调用默认的皮肤样式。我们存储皮肤样式的方法有很多:数据库、文件、配置文件、Cookie、Session等。相信你已经知道如何实现换肤了吧。

    此外,我再介绍一下在页面中如何禁用我们设置的Skin文件中的一些样式。我们只需将控件的EnableTheming属性置为false

    当我们引用Skin文件后,想让某一控件按照我现在在页面中设置的样式显示,我们还可以在引用Skin文件的时候用StylesheetTheme=”Default”代替Theme=”Default”。我们下面说明一下这两者的区别

    Theme:获取或设置页柱体的名称。(注:用户在引用皮肤文件的时候采用该方式的话,我们在对页面包括控件的属性作再次更改,则页面没有变化,将会套用皮肤文件中的样式)

    StylesheetTheme:获取或设置应用于此页的样式表的名称。(注:用户在引用皮肤文件的时候采用该方式的话,我们在对页面包括控件的属性作再次更改,则页面将会优先按照页面中设定的样式显示)
 

posted on 2007-04-15 14:59  steven love sunny  阅读(694)  评论(1编辑  收藏  举报