您的代码非常接近工作状态;问题是greenborderbutton正在将borderbrush应用于按钮本身,而不是覆盖模板中的边框。
要解决此问题,只需更改border的borderBrush以使用父按钮的borderBrush。您可以使用这样的模板绑定来执行此操作:
<Style x:Key="BorderButton">
<Setter Property="Control.Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border x:Name="border"
BorderThickness="2"
BorderBrush="{TemplateBinding Property=BorderBrush}"
CornerRadius="3"
Background="{x:Null}">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
然后,您可以使用与您相同的重写样式,或者只需执行以下操作:
<Button Style="{StaticResource BorderButton}" BorderBrush="Blue" Content="Blue" />