使用自定义属性值在模板中设置颜色

弗雷德

我不知道为什么这不起作用:

我有两个按钮:

<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" />,那么它就可以了,但这不好,因为我需要能够在按钮定义中设置颜色。

nemesv

BorderBrush是物业持有Brush的对象,但你尝试将其绑定到Color的属性SolidColorBrush,不能工作。

您需要使用边框TemplateBindingBackground属性:

<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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档