Ответ 1
Просто для выяснения терминологии здесь: пользовательский контроль - это элемент управления, который происходит из класса UserControl. Если бы я понял, что вы правильно выбрали ToggleButton, добавьте свойства UncheckedContent и CheckedContent. В этом случае вы создали настраиваемый элемент управления. Всегда легче следовать, если мы соглашаемся на общую терминологию:)
Насколько я знаю, вы не можете выполнять такое наследование общего стиля в XAML. Вы всегда должны четко указывать, на каком стиле основан другой стиль. Ваш стиль может быть основан на стандарте по умолчанию для ToggleButton или на другом стиле. Если вы не можете построить цепочку наследования стиля, которая будет уважать это, этот подход не будет работать.
Но так как у вас есть настраиваемый элемент управления, вы не могли бы написать стиль по умолчанию для него, основанный на стиле кнопки переключения по умолчанию, подобном этому?
<Style TargetType="{x:Type CustomToggleButton}"
BasedOn="{StaticResource {x:Type ToggleButton}}">
Затем, когда вы применяете явный стиль к кнопке переключения, вы должны указать, что он основан на стиле кнопки переключения по умолчанию.
Также вы можете написать шаблон управления (по умолчанию) для своей новой кнопки переключения в Themes\Generic.xaml, которая содержит вышеуказанные триггеры. В blend вы можете получить копию шаблона по умолчанию для кнопки переключения ( "Редактировать шаблон" → "Редактировать копию" ), чтобы вы могли убедиться, что ваша кнопка переключения выглядит так же, как и обычная кнопка переключения. Затем включите триггеры выше в этот шаблон.
BTW: вам не нужно создавать новый элемент управления только для добавления новых свойств. Вы можете добавить новые свойства в существующий элемент управления с помощью прикрепленных свойств. Они могут использоваться из XAML, как и обычные свойства.