Шаблон управления существующими элементами управления в WPF

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

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

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

Проверьте StyleSnooper :

http://www.blogs.intuidev.com/image.axd?picture=2010/5/StyleSnooper_TN.png

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

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

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

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

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

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

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

Выберите параметр: «Редактируйте шаблон», и там вы идете

Класс XamlWriter предоставляет вам эту функцию. Если controlName – это имя элемента управления, то с помощью приведенного ниже fragmentа вы получаете Xaml шаблона элемента управления внутри объекта stringBuilder . Я думаю, что инструменты, упомянутые в ответах, используют этот class.

 var stringBuilder = new StringBuilder(); var xmlSettings = new XmlWriterSettings { Indent = true }; using (var xmlWriter = XmlWriter.Create(stringBuilder, xmlSettings)) { XamlWriter.Save(controlName.Template, xmlWriter); } 
  • Как изменить источник изображения динамически из кода в WPF с изображением в свойствах. Ресурсы?
  • MVVM: привязка переключателей к модели просмотра?
  • WPF: имя не существует в пространстве имен
  • Поиск контроля в элементе управления WPF
  • Получение DrawingContext для wpf WriteableBitmap
  • Почему я не могу ссылаться на System.ComponentModel.DataAnnotations?
  • Как загрузить изображение в WPF во время выполнения?
  • Как правильно реализовать BackgroundWorker с обновлениями ProgressBar?
  • Создание кнопки изображения + текста с шаблоном управления?
  • Что означает «Захват мыши» в WPF?
  • Пользовательский контроль WPF Parent
  • Давайте будем гением компьютера.