zoukankan      html  css  js  c++  java
  • ASP.NET中的Theme和Skin

    Theme是允许你定义页面和控件外观的许多属性的集合, 应用这些属性可以在web application中的页面里, 或者是整个web application, 或者是一个服务器上跨越多个web application的范围内一致地提供外观.

    Theme and Control Skins

    ===================

    Theme是由一系列的元素组成的, 包括: skin, cascading style sheets(CSS), images, 和其他的资源. 一个Theme至少要有skin. Theme是在你的站点或者你的web服务器的一个特定的文件夹里定义的.

    Skin

    ---------------------

    skin文件的后缀名是.skin, 该文件中包含诸如Button, Label, TextBox, 或者Calendar之类控件的属性配置. 控件的skin配置跟control markup自身很像, 但是仅包含你想要作为属性的一部分的那些属性.  比如下面就是一个button控件的skin:

    <asp:button runat="server" BackColor="lightblue" ForeColor="black" />

    你可以创建.skin文件在Theme文件夹里. 一个.skin文件可以包含一个或多个控件的skin. 你可以定义skin到一个单独的文件中, 或者定义一个theme的所有skin到一个单独的文件中.

    控件的skin有两种, default skins和named skins:

    • 当一个theme应用到一个页面上的时候, Default skin会自动地应用到同种类的所有的控件上. 如果一个control skin没有SkinID属性的话, 那么它就是一个default skin.
    • named skin是一个带有SkinID属性集的control skin. named skin不会自动地按类型应用到控件上. 取而代之的是, 你需要显示地通过设置控件的SkinID属性来应用一个named skin到一个控件上. 创建named skin允许你为一个application中的相同控件的不同实例设置不同的skin.

    Cascading Style Sheets

    ---------------------

    主题还包括层叠样式表(css)文件. 当你放一个css文件到theme文件夹中的时候, 样式表就被自动地作为theme的一部分被应用起来了. 

    Theme Graphics and Other Resources

    ----------------------

    主题还可以包括图形和其他资源, 比如脚本文件或者声音文件. 比如说, 你的页面theme也许会为TreeView控件包括一个skin, 作为这个theme的一部分, 你可以包含用于代表展开按钮和折叠按钮的图片.

    典型地, theme的资源文件都在跟skin文件相同的文件夹中, 但是他们也可以存在于web application的其他地方, 比方说theme文件夹的子文件夹. 如果要引用子文件夹的资源, 可以像下面的例子一样使用一个路径:

    <asp:Image runat="server" ImageUrl="ThemeSubfolder/filename.ext" />

    你还可以引用theme文件夹之外的资源文件. 如果你使用波浪线(~)语法去引用资源文件的话, Web application会自动地找到图片. 比如, 你把一个theme的资源放在一个你appliction的子文件夹中, 你可以使用这样形式的路径来引用你的资源文件:

    <asp:Image runat="server" ImageUrl="~/AppSubfolder/filename.ext" />

    Theme和Cascading Style Sheets的区别

    =====================

    Theme和Cascading Style Sheets都可以定义一系列可以被应用到任何页面的常用属性. 然而, 他们在下面的方面有不同:

    • Theme能够为一个控件或者页面定义很多属性, 而不仅仅是style属性. 比如说, 使用theme, 你可以为TreeView控件定义图片, 还有GridView控件的模板布局, 等等.
    • Theme可以包括图片文件.
    • Theme并不会像样式表一样层叠. 默认情况下, 任何通过页面的Theme属性定义的属性值都会覆盖控件所声明的属性值, 除非你显式地使用StyleSheetTheme属性应用theme.
    • 每个页面上仅可以应用一个theme. 你不能再一个页面上应用多个theme, 而不像样式表那样可以应用多个style sheet.

    摘译自:

    ASP.NET Themes and Skins

    http://msdn.microsoft.com/en-us/library/ykzx33wh.aspx

  • 相关阅读:
    【loj6179】Pyh的求和
    【bzoj4036】按位或
    【CF472G】Design Tutorial: Increase the Constraints
    【bzoj4811】由乃的OJ
    双马尾机器人(???)
    【codechef】Children Trips
    【bzoj3796】Mushroom追妹纸
    【bzoj4571】美味
    前夕
    【bzoj3589】动态树
  • 原文地址:https://www.cnblogs.com/awpatp/p/1748535.html
Copyright © 2011-2022 走看看