用vs2008制作主题和皮肤

上传人:wm****3 文档编号:43275192 上传时间:2018-06-05 格式:DOC 页数:8 大小:33.50KB
返回 下载 相关 举报
用vs2008制作主题和皮肤_第1页
第1页 / 共8页
用vs2008制作主题和皮肤_第2页
第2页 / 共8页
用vs2008制作主题和皮肤_第3页
第3页 / 共8页
用vs2008制作主题和皮肤_第4页
第4页 / 共8页
用vs2008制作主题和皮肤_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《用vs2008制作主题和皮肤》由会员分享,可在线阅读,更多相关《用vs2008制作主题和皮肤(8页珍藏版)》请在金锄头文库上搜索。

1、新建项目外观文件生成.skin 文件制作例子引用例上述控件并没有对控件进行样式控制,只是声明了 SkinID 属性,当声明了 SkinID 属性后, 系统会自动在主题文件中找到相匹配的 SkinID,并将主题样式应用到当前控件。在使用主 题的页面,必须声明主题,如果不声明主题,则页面无法找到页面中控件需要使用的主题, 示例代码如下所示。主题还可以包括级联样式表(CSS 文件) ,将.css 放置在主题目录中,样式表则会自动的应 用为主题的一部分,不仅如此,主题还可以包括图片和其他资源。页面主题和全局主题 用户可以为每个页面设置主题,这种情况被称为“页面主题”。也可以为应用程序的每个页 面都使用

2、主题,在每个页面使用默认主题,这种情况被称为“全局主题”。页面主题是一个主题文件夹,其中包括控件的主题、层叠样式表、图形文件和其他资源文 件,这个文件夹是作为网站中的“App_Themes”文件夹和子文件夹创建的。每个主题都是“App_Themes”文件夹的一个子文件夹,使用全局主题,可以让应用程序中的所有页面都能够使用该主题,当维护同一个服务器上 的多个网站时,可以使用全局主题定义应用程序的整体外观。当需要使用全局主题时,则 可以通过修改 Web.config 配置文件中的配置节进行主题的全局设定。使用全局主题和使用页面主题的方法基本相同,它们都包括属性设置、样式设置和图形。 但是全局主题和

3、页面主题不同的是,全局主题存放在服务器上的公共文件夹中,这个文件 夹通常命名为 Theme。服务器上的任何 Web 应用程序都能够使用 Theme 文件夹中的主题。 主题能够和 CSS 文件一样,进行页面布局和控件样式控制,但是主题和 CSS 文件的描述 不同,所能够完成的功能也不同,其主要区别如下所示:q 主题可以定义控件的样式,不仅能够定义样式属性,还能够定义其他样式,包括模板。q 主题可以包括图形等其他主题元素文件。q 主题的层叠方式与 CSS 文件的层叠方式不同。q 一个页面只能应用与一个主题,而 CSS 可以被多个文件应用。主题不仅能够进行控件的样式定义,还能够定义模板,这样减少了相

4、同类型的控件的模板 编写操作。但是主题也有缺点,一个页面只能应用一个主题,而无法应用多个主题。与之 相反的是,一个页面能够应用多个 CSS 文件。主题与 CSS 相比,主题在样式控制上还有很多不够强大的地方,而 CSS 页面布局的能力 比主题更加强大,样式控制更加友好。应用和禁用主题 通常情况下,可以在网站目录下的“App_Themes”文件夹下定义主题,然后在页面中进行主 题的使用声明,这样在页面中就能够使用主题了。制作主题的过程也非常简单,在 “App_Themes”文件夹下新建一个文件夹,则这个文件夹的名称就会作为主题名称在应用程 序中保存。同样,开发人员能够在文件夹中可以新增“.ski

5、n”文件,以及“.css”文件和图形图 像文件来修饰主题,这样一个主题就制作完毕并能够在页面中使用了。在很多情况下,在 Web 开发中需要定义全局主题,这样 Web 应用程序就能够使用这个主 题,全局主题通常放在一个特殊的目录下,放在这个目录下的主题能够被服务器上的任何 网站,以及网站中的任何应用所引用。全局主题存放的目录如下所示。Iisdefaultrootaspnet_clientsystem_webversionThemes在全局主题目录下,可以创建任何主题文件,这样在网站上的其他 Web 应用也能够使用全 局主题作为主题。在主题的编写过程中,通常需要以下几个步骤:q 添加项目,包括.s

6、kin、css 以及其他文件。q 创建皮肤,包括对控件属性的定义。q 在页面中声明并使用皮肤。通过以上三个步骤能够创建并使用皮肤,但是值得注意的是,在创建皮肤文件时,必须保 存为.skin 文件并且主题中控件的定义必须包括 SkinID 属性且不能包括 ID。在皮肤中,对 控件的属性的描述同样必须要包括 runat=“server”标记,这样才能够保证皮肤文件中控件的 皮肤的描述是正确和可读的,示例代码如下所示。在定义了控件的皮肤后,就可以在单个页面进行皮肤的声明和使用,示例代码如下所示。同样也可以使用 StyleSheetTheme 属性进行页面主题的设置,示例代码如下所示。如果需要使用全局

7、主题,则需要在 Web.config 配置文件中定义全局主题,示例代码如下所 示。在使用主题后,对于控件的属性的编写是没有任何效果的,示例代码如下所示。上述代码编写了一个控件的属性,其中某些属性被主题覆盖。简单的说,局部的设置将会 服从全局的设置,即页面上的控件已经具备自己的属性设置,但是当指定了 SkinID 属性后, 部分属性将会服从全局属性设置,如图 12-12 和图 12-13 所示。虽然本地属性设置为另一种样式,但是运行后的控件样式却不是本地属性配置的样式,因 为其中的某些属性已经被主题更改。在设置页面或者全局主题的 StyleSheetTheme 属性时, 将主题作为样式表主题应用

8、的话,本地页的设置将优先于主题中定义的设置,即局部设置 将会覆盖全局设置。对于主题而言,如果本地主题,以及全局主题都存在时,这种情况如控件本身的属性和使 用的主题属性都存在一样,本身的属性将会被全局属性更改,全局属性中没有的属性将继 续保留。而相对与 CSS 文件而言,如果本地 CSS 描述和全局 CSS 描述都存在,包括控件 本身的 CSS 描述和内嵌式 CSS 文件的描述都一样时,相反的,本地 CSS 描述会替代全局 的 CSS 描述。对于有些情况,主题会重写也和控件外观的本地设置。当控件或页面已经定义了外观,而 又不希望全局主题将本地主题进行重写和覆盖,可以禁用主题的覆盖行为。对于页面,

9、可 以用声明的方法进行禁用,示例代码如下所示。当页面需要某个主题的属性描述,而又希望单个控件不被主题描述时,同样可以通过 EnableTheming 属性进行主题禁止,示例代码如下所示。这样就可以保证该控件不会被主题描述和控制,而页面和页面的其他元素可以使用主题描 述中的相应的属性。12.1.8 用编程的方法控制主题 当主题被制作完成后,很多场合用户希望能够自行更改主题,这种方式非常的实用,通过 编程手段,只需要更改 StyleSheetTheme 属性就能够对页面的主题进行更改。通过编程的 方法不仅能够更改页面的主题,同样可以更改控件的主题,达到动态更改控件主题的效果。 当需要更改页面的主题

10、时,可以更改页面的 StyleSheetTheme 属性即可实现页面主题更改 的效果,StyleSheetTheme 属性的更改代码只能编写在 PreInit 事件中,示例代码如下所示。protected void Page_PreInit(object sender, EventArgs e)switch (Request.QueryString“theme“) /获取传递的参数case “MyTheme1“: /判断主题Page.Theme = “MyTheme1“; break; /更改主题case “MyTheme2“: /判断主题Page.Theme = “MyTheme2“; br

11、eak; /更改主题上述代码则通过更改 Page 的 StyleSheetTheme 属性对页面的主题进行更改,在编程的过程 中,同样可以使用更加复杂的编程方法实现主题的更改。在更改页面的代码中,必须首先 重写 StyleSheetTheme 属性,然后通过其中的 get 访问器返回样式表的主题名称,示例代码 如下所示。public override String StyleSheetThemeget /获取主题return “MyTheme1“; /返回主题名称对于控件,可以通过更改控件的 SkinID 属性来对控件的主题进行更改,示例代码如下所示。protected void Page_PreInit(object sender, EventArgs e)Calendar3.SkinID = “blue“; /更改 SkinID 属性上述代码通过修改控件的 SkinID 属性修改控件的主题,在控件中,SkinID 属性是能够将控 件与主题进行联系的关键属性。本文来自 CSDN 博客,转载请标明出处: http:/

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号