ControlTemplate для существующих элементов управления в WPF

Как получить существующий элемент управления ControlTemplate в WPF в формате XAML (визуальное дерево)? Это поможет создать новый ControlTemplate с помощью существующего шаблона.

13.10.2009 10:03:50
8 ОТВЕТОВ
РЕШЕНИЕ

Стили вместе с примерами шаблонов доступны для загрузки в MSDN , см. Default WPF ThemesСсылку .

Однако вы также можете расширить существующий стиль, не переопределяя все с помощью BasedOnатрибута.

30
20.04.2016 17:07:50
Argh приятель! Ваша ссылка будет потоплена в шкафчике Дэйви Джонса!
Ronnie W 20.04.2016 13:03:42

Вы можете использовать такой инструмент, как ShowMeTheTemplate

1
13.10.2009 10:09:51
Есть ли код для получения его в формате XAML? (Например, просмотр визуального дерева в формате дерева)
Sugirthini 13.10.2009 10:15:03
да, так как этот инструмент делает это ... вы можете посмотреть на код, он представлен в zip-файле
Thomas Levesque 13.10.2009 10:31:04

Проверьте StyleSnooper :


(источник: intuidev.com )

Он выведет стандартные стили (и, следовательно, шаблоны) для встроенных элементов управления. Вы также можете загрузить определенную DLL, содержащую элементы управления WPF, и просмотреть стили по умолчанию для них.

34
30.04.2019 16:04:32
@ doron-yaacoby, я нашел другую ссылку для скачивания с: blog.tomaskafka.com/book/export/html/112
Nicolai Shestakov 20.08.2014 10:37:17
@NicolaiShestakov, спасибо, я обновил ссылку в ответе.
Drew Noakes 20.08.2014 13:55:20
@Glorfindel, вы делаете большую работу с этими правками! Я видел несколько из вас сейчас. Спасибо!
Drew Noakes 3.05.2019 03:31:54

Если у вас есть Expression Blend, вы можете:

  1. Перетащите элемент управления на поверхность конструктора
  2. Щелкните правой кнопкой мыши элемент управления и выберите «Изменить шаблон» -> «Редактировать копию».

Когда вы сделаете это, Blend извлечет базовый шаблон из элемента управления и явным образом объявит его в документе / приложении как ресурс, который вы затем сможете редактировать по своему усмотрению. Вы можете сделать это для любого контроля.

16
13.10.2009 12:58:11

Книга Мэтью Макдональда "Pro WPF в C # 2008" включает браузер шаблона управления в главе 15. Я считаю, что вы можете просто загрузить пример кода с веб-сайта Apress.

3
19.12.2009 13:15:08

Используйте для этого Microsoft Blend: вставьте весь код XAML в файл в этом инструменте и щелкните правой кнопкой мыши элемент управления, визуальное дерево которого вы хотите воспринимать:

Выберите опцию: Изменить шаблон, и вы идете

1
15.06.2013 06:04:01

Класс 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);
}
0
26.09.2013 18:59:17

Обновление 2020:

Все стили и шаблоны компонентов WPF теперь перенесены сюда .
Но, прежде чем создавать новый компонент, просто проверьте это, чтобы увидеть, есть ли у вас хорошая альтернатива этому (возможно, смена стиля может сработать).
Примечание. Обычно в нем есть несколько привязок DynamicResource, которые вы можете заменить на свои и сделать статическими. Если вы не хотите делать много ручной работы, вы можете рассмотреть возможность использования второго решения ниже.

Второе и более короткое решение может заключаться в использовании Microsoft Blend для извлечения шаблона с помощью следующих шагов:

Щелкните правой кнопкой мыши элемент управления Edit Template>> Edit CurrentИЛИEdit a Copy

Но будьте осторожны с этим, так как он не всегда экспортирует весь шаблон,
но необходимую часть.
Просто сравните этот шаблон с официальным (упомянутым выше), чтобы убедиться, что все в порядке.

0
12.04.2020 20:48:29