创建自定义皮肤时,您需要做两部分:
- 声明您将使用的所有资源;
- 注册皮肤。
如果你对嵌入式资源和/或网络资源不熟悉,建议你从以下文章入手:
- 关于嵌入式资源的一般文章 -- http://www.codeproject.com/Articles/3089/Understanding-Embedded-Resources-in-Visual-Studio
- 关于网络资源的文章 -- http://www.codeproject.com/Articles/12997/WebResource-ASP-NET-2-0-explained
声明资源
现在我们在同一个页面上寻找网络资源,让我们开始吧。
如文章中所述,完全限定的资源名称是 DefaultNameSpace.[Path.To.File.].FileName,文件路径是可选的,例如您可以将所有文件放在项目的根目录中。
您的皮肤组装项目的默认命名空间可通过右键单击 -> 属性菜单获得。
文件夹路径虽然是可选的,但很好,因为它有助于在单个程序集中处理多个皮肤。假设您的皮肤名称是“TelerikYouthful”,那么您的项目根目录中应该有一个名为“TelerikYouthful”的文件夹。
在其中,您必须有一个名为“Window.TelerikYouthful.css”的文件。添加文件时,请确保设置正确的构建类型:右键单击 -> 属性,将构建类型设置为 Embedded Resource。
设置完这两个之后,就该声明资源了。同样,您可以使用单个文件,但我更喜欢使用单独的文件。在项目的根目录中,创建一个文件 RadWindow.Skins.cs。
在其中添加以下行:
using System.Web.UI;
#region TelerikYouthful
[assembly: WebResource("CustomSkinAssembly.TelerikYouthful.Window.TelerikYouthful.css", "text/css", PerformSubstitution = true)]
#endregion
需要使用,因此您不必每次都编写 System.Web.UI.WebResource。然后是完全限定的资源名称:我的默认命名空间是 CustomSkinAssembly;我的路径是 TelerikYouthful,文件名是 Window.TelerikYouthful.css。
类型字符串很明显。
需要执行替换,以便您可以引用 CSS 文件中的网络资源。
您现在可以构建您的项目,并使用 Reflector、JustDecompile、DotPeek 等工具检查输出 DLL,以检查文件是否确实嵌入。
注册皮肤
接下来您需要注册皮肤。为此,您需要在您的默认命名空间中添加您想要皮肤的控件的类,并使用 EmbeddedSkin 属性注释该类,例如:
using System.Web.UI;
using Telerik.Web;
#region TelerikYouthful
[assembly: WebResource("CustomSkinAssembly.TelerikYouthful.Window.TelerikYouthful.css", "text/css", PerformSubstitution = true)]
#endregion
namespace CustomSkinAssembly
{
[EmbeddedSkin("Window", "TelerikYouthful", typeof(RadWindow))]
public class RadWindow
{
}
}
注意:我为 Telerik.Web 添加了一个 using,因此我们不会一直使用 Telerik.Web.EmbeddedSkin。
现在您可以构建项目并且应该可以使用皮肤了。