Я создал собственный класс ToggleButton, ToggleButtonEx, который расширяет ToggleButton. ToggleButtonEx содержит некоторые свойства зависимостей, которые я создал, чтобы использовать их в шаблоне. Я хочу, чтобы стиль всех моих переключателей базировался на новом стиле переключателей. Вот что у меня есть:
Стиль ToggeButtonEx, который определяет шаблон:
<Style TargetType="{x:Type local:ToggleButtonEx}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:ToggleButtonEx}">
...
Стиль переключателя, основанный на стиле ToggleButtonEx:
<Style BasedOn="{StaticResource {x:Type local:ToggleButtonEx}}" TargetType="{x:Type RadioButton}">
Это не работает, хотя. Согласно MSDN,
"Если вы создаете стиль с
Свойство TargetType и основывать его на
другой стиль, который также определяет
Свойство TargetType, тип цели
производного стиля должен быть одинаковым
как или быть производным от типа
Базовый стиль. "
Поскольку радиокнопка является производной от ToggleButton, а не от ToggleButtonEx, я не могу применить стиль, а мне нужно, чтобы стиль кнопки переключения основывался на ToggleButtonEx, иначе я не могу использовать свои собственные свойства зависимостей в шаблоне. Есть ли способ сделать это?
UPDATE:
Вот мое требование. Может быть, кто-то может помочь с альтернативным решением.
Я хочу отображать переключатели в виде переключателей, чтобы они выглядели как переключатели, но сохраняли функциональность взаимоисключающих переключателей. Это было не сложно сделать. Я создал стиль с таргетингом на ToggleButton, чтобы настроить желаемый стиль кнопок переключения, а затем создал новый стиль с таргетингом на RadioButton, основанный на стиле кнопок.
Теперь в моем стиле ToggleButton я изменяю ControlTemplate, чтобы у кнопки были закругленные углы. Я решил, что я хотел бы, чтобы разные кнопки имели разные значения CornerRadius 'или вообще не имели округления. Я спросил, как это можно сделать в этом посте:
Наследование / переопределение стилей WPF
Одним из предложений было создание пользовательского ToggleButton и добавление нового свойства, чтобы его можно было использовать в TemplateBinding. Я пробовал это, но, похоже, если это возможно, я не делаю это правильно. Я бы не хотел добавлять новый стиль каждый раз, когда мне нужно другое значение CornerRadius.