我不知道为什么这不起作用:
我有两个按钮:
<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"
设置为“西红柿”,因为我在按钮定义中指定了颜色。
第二个按钮没有BorderBrush="..."
指定,因此应使用默认颜色DarkRed
从<Setter Property="BorderBrush" Value="DarkRed" />
。
但是它根本不使用任何颜色。
如果我像这样对颜色进行硬编码<SolidColorBrush x:Name="BorderBrush" Color="DarkRed" />
,那么它就可以了,但这不好,因为我需要能够在按钮定义中设置颜色。
该BorderBrush
是物业持有Brush
的对象,但你尝试将其绑定到Color
的属性SolidColorBrush
,不能工作。
您需要使用边框TemplateBinding
的Background
属性:
<Border x:Name="RootElement" CornerRadius="4"
Background="{TemplateBinding BorderBrush}">
作为一种替代解决方案,您可以在使用的帮助下绑定Color
父级的属性:BorderBrush
RelativeSource TemplatedParent
<Border.Background>
<SolidColorBrush x:Name="BorderBrush"
Color="{Binding RelativeSource={RelativeSource TemplatedParent},
Path=BorderBrush.Color}" />
</Border.Background>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句