Я хочу определить стиль для ButtonBase
, а затем расширить этот стиль по-разному для Togglebutton
и Button
. Я хочу что-то вроде этого:Шаблоны управления доступом между различными типами кнопок
<!-- Base Style -->
<Style x:Key="ButtonBaseStyle" TargetType="ButtonBase">
<Style.Resources>
<ControlTemplate x:Key="NormalStyle" TargetType="ButtonBase">...</ControlTemplate>
<ControlTemplate x:Key="HoverStyle" TargetType="ButtonBase">...</ControlTemplate>
</Style.Resources>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Template" Value="{StaticResource HoverStyle}" />
</Trigger>
<Trigger Property="IsMouseOver" Value="False">
<Setter Property="Template" Value="{StaticResource NormalStyle}" />
</Trigger>
</Style.Triggers>
</Style>
<!-- Toggle Button -->
<Style x:Key="ToggleButtonStyle" TargetType="ToggleButton" BasedOn="ButtonBaseStyle">
<Style.Resources>
<ControlTemplate x:Key="CheckedStyle" TargetType="ToggleButton">...</ControlTemplate>
</Style.Resources>
<Style.Triggers>
<!-- ToggleButton should inherit the triggers defined in ButtonBaseStyle; adding the additional trigger specific to ToggleButton here -->
<Trigger Property="IsChecked" Value="True">
<Setter Property="Template" Value="{StaticResource CheckedStyle}" />
</Trigger>
</Style.Triggers>
</Style>
Объявление стиля для ToggleButton
является неправильным. WPF
не позволяет стилям так наследовать. Я хочу знать, смогу ли я достичь этого эффекта любым другим способом. Обратите внимание, что я знаю, что я могу сделать шаблоны управления глобальными и использовать их выборочно для разных классов кнопок. Это то, что я делаю сейчас, но я хотел бы избежать этого.
Спасибо. Это было глупо со мной! – 341008