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 ответ

Ответ довольно длинноват, поэтому, пожалуйста, держись со мной.

При создании пользовательских скинов вам нужно сделать две части:

  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

Объявление ресурсов

Теперь, когда мы находимся на одной странице для веб-ресурсов, давайте начнем.

Как отмечено в статьях, полное имя ресурса - 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 все время.

Теперь вы можете построить проект, и вы сможете использовать скин.

Другие вопросы по тегам