我无法弄清楚,为什么这不起作用:
我有两个按钮:
<Button Content="qwerty" BorderBrush="Tomato">
<Button Content="dvorak">
我用这种风格调整这些按钮的外观:
<Style TargetType="Button">
<Setter Property="BorderBrush" Value="DarkRed" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border x:Name="RootElement" CornerRadius="4">
<Border.Background>
<SolidColorBrush x:Name="BorderBrush" Color="{TemplateBinding BorderBrush}" />
</Border.Background>
...
第一个按钮应该将x:Name="BorderBrush"
中的颜色设置为&#34;番茄&#34;因为我在按钮定义中指定了它。
第二个按钮未指定BorderBrush="..."
,因此应使用DarkRed
中的默认颜色<Setter Property="BorderBrush" Value="DarkRed" />
。
但它根本不使用任何颜色。
如果我像这样<SolidColorBrush x:Name="BorderBrush" Color="DarkRed" />
硬编码颜色,那么它可以工作,但这不好,因为我需要能够在按钮定义中设置颜色。
答案 0 :(得分:1)
BorderBrush
属性是持有Brush
对象,但您尝试将其绑定到Color
的{{1}}属性,但该属性无效。
您需要使用边框的SolidColorBrush
属性上的TemplateBinding
:
Background
作为替代解决方案,您可以在使用<Border x:Name="RootElement" CornerRadius="4"
Background="{TemplateBinding BorderBrush}">
的帮助下绑定父Color
的{{1}}属性:
BorderBrush