Первое решение: вы могли бы сделать ваше TreeView
расширение RadTreeView
.Я думаю, что RadTreeView
имеет некоторые специальные свойства зависимостей, а также использует собственный контейнер элементов.Вот почему стиль Telerik не работал должным образом на TreeView
, хотя он компилируется в первую очередь.
Второе решение: может быть для извлечения стиля RadTreeView
и его рефакторинга, чтобы он мог применяться к WPF TreeView
.
В Visual Studio у вас есть два варианта.Первый вариант - выполнить следующие 5 простых шагов:
- Перейдите в XAML Designer и откройте Панель дизайна (Shift + F7)
- Выберите элемент, который выВы хотите извлечь стиль из (
RadTreeView
) и щелкнуть по нему правой кнопкой мыши - . В контекстном меню выбрать Редактировать шаблон -> Редактировать копию
- . В диалоговом окне введитеимя для нового извлеченного стиля и нажмите Ok
- Теперь вы вернулись в XAML Designer.Ищите новый стиль.Он был добавлен в тот же файл, где вы выбрали тег элемента для извлечения стиля, и назван так, как вы указали ранее.Обычно он добавляется в словарь ресурсов верхнего уровня
Чтобы извлечь шаблон элементов, повторите шаги 1 и 2. Затем выберите Изменить дополнительный шаблон -> Редактировать сгенерированные элементы (ItemTemplate) изконтекстное меню.Перейдите к шагам 4 и 5.
Второй вариант - выполнить следующие 7 простых шагов, чтобы извлечь стиль элемента:
- Перейдите в конструктор XAML и выберите тег элемента, который выВы хотите извлечь стиль из (
RadTreeView
) - Затем перейдите на панель Свойства и прокрутите вниз до раздела Разное
- Разверните Разное и прокрутите вниз до поля Стиль
- Справа от этого поля находится небольшой квадрат.Щелкните левой кнопкой мыши по этому квадрату, чтобы открыть контекстное меню
- . В контекстном меню выберите Преобразовать в новый ресурс ... .Откроется диалоговое окно.
- В этом диалоговом окне дайте имя новому стилю и нажмите Ok
- Теперь вы вернулись в XAML Designer.Ищите новый стиль.Он был добавлен в тот же файл, где вы выбрали тег элемента для извлечения стиля, и назван так, как вы указали ранее.Обычно он добавляется в словарь ресурсов верхнего уровня
. Чтобы извлечь шаблон, повторите шаги 1 и 2. Затем перейдите в поле Template .Перейдите к шагам с 4 по 7.
Третье решение: рефакторинг кода, чтобы он работал с RadTreeView
.
Четвертое решение: если только контейнер элементов делает несовместимые стили, настройте TreeView
на использование версии связки элементов Telerik (вместо этого)из TreeViewItem
).Вы можете сделать это, расширив TreeView
, а затем переопределив контейнер элементов по умолчанию:
public class MyExtendedTreeView : TreeView
{
protected override bool IsItemItsOwnContainerOverride(object item)
{
return (item is RadTreeViewItem);
}
protected override DependencyObject GetContainerForItemOverride()
{
return new RadTreeViewItem();
}
}
Я думаю, что это ваши варианты.