我想为 和 定义一个样式,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
不允许样式像那样继承。我想知道我是否可以通过其他任何方式实现这种效果。请注意,我知道我可以使控件模板全局化,并有选择地将它们用于不同的按钮类。这就是我现在正在做的,但我想避免这种情况。