Как получить существующий контрольный элемент управления в WPF в формате XAML (визуальное дерево)? Это поможет создать новую контрольную таблицу с помощью существующего шаблона.
Шаблон управления существующими элементами управления в WPF
Ответ 1
Стили стилей вместе с примерами шаблонов находятся на на MSDN для загрузки, см. Default WPF Themes
ссылка.
Однако вы также можете расширить существующий стиль, не переопределяя все, используя атрибут BasedOn
.
Ответ 2
Проверьте StyleSnooper:
(источник: intuidev.com)
Он выведет стандартные стили (и, следовательно, шаблоны) для встроенных элементов управления. Вы также можете загрузить определенную DLL, содержащую элементы управления WPF, и просмотреть стили по умолчанию для них.
Ответ 3
Если у вас Expression Blend, вы можете:
- Перетащите элемент управления на поверхность дизайна
- Щелкните правой кнопкой мыши элемент управления и выберите "Редактировать шаблон" → "Редактировать копию"
Когда вы это сделаете, Blend извлечет базовый шаблон из элемента управления и явно объявит его в документе/приложении как ресурс, который вы затем можете отредактировать по своему вкусу. Вы можете сделать это для любого элемента управления.
Ответ 4
В книге "Pro WPF в С# 2008" Мэтью Макдональда включен браузер шаблонов управления в главе 15. Я считаю, что вы можете просто загрузить образец кода с веб-сайта Apress.
Ответ 5
Вы можете использовать такой инструмент, как ShowMeTheTemplate
Ответ 6
Для этого используйте Microsoft Blend: Вставьте весь код XAML в файл в этом инструменте и щелкните правой кнопкой мыши элемент управления, визуальное дерево которого вы хотите воспринимать:
Выберите параметр: Измените шаблон, и там вы идете
Ответ 7
Класс XamlWriter предоставляет вам эту функциональность. Если controlName
- это имя элемента управления
затем, используя приведенный ниже фрагмент, вы получаете Xaml шаблона управления внутри объекта stringBuilder
.
Я полагаю, что инструменты, упомянутые в ответах, используют этот класс.
var stringBuilder = new StringBuilder();
var xmlSettings = new XmlWriterSettings
{
Indent = true
};
using (var xmlWriter = XmlWriter.Create(stringBuilder, xmlSettings))
{
XamlWriter.Save(controlName.Template, xmlWriter);
}