我正在尝试在dll中存储一些自定义皮肤。并将其用于我的project.i的主题telerik控件。遵循此链接中的指南
http://www.telerik.com/help/aspnet-ajax/introduction-skins-external-assembly.htm
我成功获取自定义皮肤来控制dll的radWindow控件。但是对于其他控件我失败了,当我尝试皮肤radtabStrip我得到这个错误
ID ='ctl00'的Telerik.Web.UI.RadTabStrip无法找到 嵌入式皮肤,名为'TelerikYouthful'。请确保 皮肤名称拼写正确,并且您添加了参考 到项目中的Telerik.Web.UI.Skins.dll程序集。如果你想 要使用自定义外观,请设置EnableEmbeddedSkins = false。
我不知道在指南
中提到的这一行的第一个参数是什么[Telerik.Web.EmbeddedSkin(“Window”,“BlackAndRed”,typeof(RadWindow))]
有人能说出正确的方法吗?
感谢。
答案 0 :(得分:1)
答案有点长,所以请光临我。
创建自定义皮肤时,您需要做两个部分:
如果您不熟悉嵌入式资源和/或网络资源,我建议您从以下文章开始:
现在我们在网页资源的同一页面上,让我们开始吧。
如文章中所述,完全限定的资源名称是 DefaultNameSpace。 [Path.To.File。] .FileName ,文件路径是可选的,例如您可以将所有文件放在项目的根目录中。
右侧点击 - >可以获得外观装配项目的默认命名空间。属性菜单。
文件夹路径虽然是可选的,但它很有用,因为它有助于在单个程序集中处理多个外观。假设您的皮肤名称是“TelerikYouthful”,那么您应该在项目的根目录中有一个名为“TelerikYouthful”的文件夹。
在其中,您必须有一个名为“Window.TelerikYouthful.css”的文件。添加文件时,请确保设置正确的构建类型:右键单击 - >属性,将构建类型设置为嵌入式资源。
设置完这两个之后,是时候申报资源了。同样,您可以使用单个文件,但我更喜欢单独使用。在项目的根目录中,创建一个文件 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添加了一个使用,所以我们不会一直使用Telerik.Web.EmbeddedSkin。
现在你可以构建项目了,你应该能够使用皮肤。