Asp.net V2.0:Themes (转)

Themes是Asp.net v2.0的另一个定制Web Site的增强功能,他的作用是可以对页面和控件的一些属性进行设定.并且可以将这些设定应用于整个应用程序、单一页面或者是单一的控件.

要应用一个Theme很简单,首先,Asp.net V2.0已经内置了几种Themes,只要通过设置类似
<%@ Page theme="BasicBlue" ...%>
就可以进行应用了,下面是应用此样式的一些控件的外观
;
另外,可以很轻松的创建自己的theme,首先必须在应用程序下创建Themes目录,Themes目录下可以再建任意目录,比如Themes/DefaultTheme,接下来我们可以在DefaultTheme目录下建立一种已.skin为后缀的文件,比如为了定义Button的某些属性外观,我们可以建立在Button.skin文件,并且在其中添加如下代码:
//注意不要设置ID
<asp:Button runat="server" BackColor="Black" ForeColor="White" Font-Name="Arial" Font-Size="9pt" />
(p.s:不知道VS.NET Whidbey会不会在skin文件的编写中也有智能提示,目前只能通过创建.txt文件来改变后缀名,没有任何提示和语法加亮)

尽管我们可以为每一种控件都命名一个单独的skin文件,比如Button.skin,Label.skin,TextBox.skin等等,但是实际上这并不是必须,如果你愿意建立一个叫做Button.skin的文件,里面却包含TextBox控件的属性定义,这完全是可行的.但是在一个目录下,比如上面建立的DefaultTheme目录下每一种控件只能包含一条定义,不管他们分在几个skin文件中,如果在不同skin文件中包含相同控件的定义,那么Asp.net V2.0将在运行时抛出一个错误.

我们可以将DefaultTheme应用于整个Application,只要在Web.config中增加一个配置节:
<system.web><pages theme="DefaultTheme" /></system.web>
也可以在单一页面应用:
<%@ Page theme="DefaultTheme" ...%>
我们也可以对单一控件进行应用,此时我们需要修改上面的skin文件,增加一个SkinID,并且设置其值,比如SkinID="DefaultButton",然后我们可以在任意想使用此skin的Button中设置SkinID="DefaultButton"来应用,而如果没有设置此值的其他Button将不会应用这些设置.

(图中的第一个Button通过设置skinid来应用skin,第二个则没有设置,不过由于我直接在画图中保存成gif导致了原色损失,看起来好像有问题笑脸)

与css不同的是,Theme可以定义页面和控件更多的属性,并且都是和控件属性一致,而不需要考虑控件属性转换成html的定义(如果要应用css,必须要了解这一点),另外有一个很大的不同就是skin定义的默认值无法在应用的控件上来静态改变,这一点和css的就近原则也很不一样.也就是说如果我在skin文件中定义了TextBox的Text="DefaultText",那么如果你在应用在skin的TextBox控件上重新设置Text的值是无效,不会起任何作用.当然我们仍然可以通过运行时来改变它,例如:
  void Page_PreInit (object sender,System.EventArgs e)
    {   
    //运行时改变控件或者整个页面的Theme
        TextBox2.SkinID = "";
        TextBox1.SkinID = "";
        this.Page.Theme = "BasicBlue";
    }
    void Page_Load (object sender, System.EventArgs e)
    {
    //运行时改变Skin定义的默认属性
        Button1.ForeColor = System.Drawing.Color.Red;
        Button2.Text = "Change"; //运行时改变Button
    }

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值