Как наследовать шаблон управления

Я работающий над проектом WPF, где я переопределил CheckBox управление для некоторых специальных операций. Это работает правильно.

Моя проблема состоит в том что ControlTemplate это было применено от темы (shinyred.xaml от codeplex), не применяется к моему переопределенному управлению. Есть ли способ наследоваться CheckBox ControlTemplate для использования моим новым управлением?

Все образцы, которые может найти я, фокусируются на наследовании стиля для CheckBox, но ничто о ControlTemplate.

18
задан Dave Clemmer 15 September 2011 в 17:29
поделиться

1 ответ

Нет, как вы сказали, можно «наследовать» стиль, используя свойство , но невозможно напрямую «наследую» шаблон. Это понятно, хотя, какая была бы семантика наследства шаблона? Как бы выдвинутый шаблон может каким-то образом добавлять или изменить элементы в базовом шаблоне?

С стилями это совершенно возможно, так как вы можете просто добавить . Универсал , триггеры и т. Д. Единственное, что было бы возможным с наследством шаблона, добавляют триггеры к базовому шаблону. Однако в этом случае вам придется иметь интимные знания названий элементов в базовом шаблоне, а изменение имени элемента в базовом шаблоне может нарушить ваш вывод. Не говоря уже о проблеме с читаемостью, где вы относитесь к имени в вашем производственном шаблоне, который определяется где-то еще.

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

<Style TargetType="<your type>">
    <Setter Property="Template" Value="{StaticResource <existing template resource name>}"/>
</Style>
20
ответ дан 30 November 2019 в 08:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: