创建自定义皮肤时,您需要做两部分:
- 声明你将要使用的所有资源;
- 注册皮肤。
如果你不熟悉嵌入式资源和/或网络资源,我建议你从以下文章开始:
- 关于嵌入式资源的文章——http: //www.codeproject.com/Articles/3089/Understanding-Embedded-Resources-in-Visual-Studio
- 关于网络资源的文章——http: //www.codeproject.com/Articles/12997/WebResource-ASP-NET-2-0-explained
声明资源
现在我们在同一个页面上获取 Web 资源,让我们开始吧。
如文章中所述,完全限定的资源名称是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 文件中的 Web 资源。
您现在可以构建您的项目并使用 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。
现在您可以构建项目并且应该可以使用皮肤了。