Telerik control, как загружать скины с внешних сборок?
Я пытаюсь сохранить какой-то пользовательский скин в dll.and будет использовать его для темы telerik управления моим проектом. я следовал руководству в этой ссылке
http://www.telerik.com/help/aspnet-ajax/introduction-skins-external-assembly.htm
и я успешно получаю пользовательский скин для темы элемента управления radWindow из dll.but для других элементов управления, я не могу, когда я пытаюсь скинь radtabStrip, я получаю эту ошибку
Telerik.Web.UI.RadTabStrip с идентификатором ='ctl00' не смог найти встроенный скин с именем TelerikYouthful. Пожалуйста, убедитесь, что имя скина написано правильно и что вы добавили ссылку на сборку Telerik.Web.UI.Skins.dll в своем проекте. Если вы хотите использовать пользовательский скин, установите EnableEmbeddedSkins=false.
я понятия не имею, что поставить для 1-го параметра для этой строки ниже, что упоминание в руководстве
[Telerik.Web.EmbeddedSkin("Окно", "BlackAndRed", typeof(RadWindow))]
Кто-нибудь может сказать правильный способ сделать это?
Благодарю.
1 ответ
Ответ довольно длинноват, поэтому, пожалуйста, держись со мной.
При создании пользовательских скинов вам нужно сделать две части:
- Объявите все ресурсы, которые вы собираетесь использовать;
- Зарегистрируйте скины.
Если вы не знакомы со встроенными ресурсами и / или веб-ресурсами, я предлагаю вам начать со следующих статей:
- Статья о встроенных ресурсах в целом - 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.
Вы можете создать свой проект сейчас и проверить выходную DLL с помощью таких инструментов, как Reflector, JustDecompile, DotPeek и т. Д., Чтобы проверить, действительно ли файл внедрен.
Регистрация скина
Далее нужно зарегистрировать скин. Для этого в ваше пространство имен по умолчанию необходимо добавить класс элемента управления, который вы хотите обработать, и аннотировать этот класс атрибутом 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 все время.
Теперь вы можете построить проект, и вы сможете использовать скин.