Как сказал qntmfred, вы не можете сделать это напрямую. Тем не менее, если у вас есть элемент управления, который вы хотите настроить (как он выглядит так, как вы), вы можете сделать это, добавив подходящие свойства настройки, такие как свойство CustomButtons (которое каждый пользователь элемента управления мог добавить свои собственные кнопки для) или свойство ExtensionContent (которое каждый пользователь элемента управления мог установить на любой контент, который они хотели), оставьте его пустым, добавьте один элемент управления или добавьте панель с таким количеством вещей, которое они хотели бы на ней). Ваш ControlTemplate не присваивал бы семантике этим свойствам, а просто размещал их так, как им было дано. Например, предположим, что вы предоставили свойство ExtensionContent. Ваш ControlTemplate мог представить это с помощью ContentPresenter:
<ContentPresenter ContentSource="ExtensionContent" />
И ваши пользователи могли положить все, что они хотели в нем:
<s:StefansControl>
<s:StefansControl.ExtensionContent>
<StackPanel Orientation="Horizontal">
<TextBlock Text="I'm custom content" />
<Button Click="DoSomethingSurprising_Click">Click me</Button>
<Image Source="something.jpg" />
</StackPanel>
</s:StefansControl.ExtensionContent>
</s:StefansControl>
Другой, возможно, заключается в обеспечении свойств стиля, которые применяются к частям вашего контроля так что пользователи могут их стиль (включая изменение шаблона , что часть (только) элемента управления) без замены всего стиля/шаблона. Это своего рода идея «интерфейс к определенному элементу», например. предоставить свойство FooBoxStyle, которое будет применено к текстовому блоку «foo».
Короче говоря, идея состоит в том, чтобы создать определенную меру «частичной замены» в базовом шаблоне - будь то с использованием контента, стилей, шаблонов или их комбинации. WPF не дает общего понятия «частичная замена», но вы можете предоставить свое собственное конкретное понятие частичной замены, если вы можете предсказать, какие частичные замены могут потребоваться.
Почему бы не просто, о, я не знаю ... добавьте кнопку в шаблон? – Will
Поскольку решение использует этот элемент управления, и каждый проект решает, какие кнопки добавить –