0

我正在尝试将一些自定义皮肤存储在 dll 中。并将使用它来为我的项目的 Telerik 控件设置主题。我按照本指南进行操作,并且成功地从 dll 中获得了自定义皮肤以设置 radWindow 控件的主题。但是对于其他控件,我失败了,当我尝试对 radtabStrip 进行皮肤时,我收到此错误:

ID='ctl00' 的 Telerik.Web.UI.RadTabStrip 无法找到名为“TelerikYouthful”的嵌入式皮肤。请确保皮肤名称拼写正确,并且您已在项目中添加了对 Telerik.Web.UI.Skins.dll 程序集的引用。如果要使用自定义皮肤,请设置 EnableEmbeddedSkins=false。

我不知道在指南中提到的这一行下面的第一个参数应该放什么

[Telerik.Web.EmbeddedSkin("Window", "BlackAndRed", typeof(RadWindow))]

谁能告诉正确的方法来做到这一点?

4

1 回答 1

1

创建自定义皮肤时,您需要做两部分:

  1. 声明你将要使用的所有资源;
  2. 注册皮肤。

如果你不熟悉嵌入式资源和/或网络资源,我建议你从以下文章开始:

  1. 关于嵌入式资源的文章——http: //www.codeproject.com/Articles/3089/Understanding-Embedded-Resources-in-Visual-Studio
  2. 关于网络资源的文章——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。

现在您可以构建项目并且应该可以使用皮肤了。

于 2013-01-25T13:17:16.573 回答