在WPF中,为什么使用TemplateBinding时Rectangle.Fill属性似乎不起作用?

时间:2009-03-23 12:15:42

标签: wpf templatebinding

我无法弄清楚为什么这个XAML代码不起作用。使用TemplateBinding时(见下文),背景颜色设置。但是当我使用普通的颜色字符串(即“红色”)时,它可以正常工作。

<ControlTemplate x:Key="InstanceButtonTemplate" TargetType="{x:Type Control}">
    <Grid>
        <Rectangle>
            <Rectangle.Fill>
                <SolidColorBrush Color="{TemplateBinding Background}"></SolidColorBrush>
            </Rectangle.Fill>
        </Rectangle>
    </Grid>
</ControlTemplate>

然而,当我以这种方式使用TemplateBinding时,它工作得很好......

<ControlTemplate x:Key="InstanceButtonTemplate" TargetType="{x:Type Control}">
    <Grid>
        <Rectangle Fill="{TemplateBinding Background}"></Rectangle>
    </Grid>
</ControlTemplate>

有什么想法吗?

编辑: 以澄清,我打算将其扩展为使用渐变画笔,这就是为什么我需要能够使用渐变分配给Rectangle.Fill属性XAML而不是普通字符串。

1 个答案:

答案 0 :(得分:5)

那是因为Color与Background

的类型不同

背景是画笔,颜色是..好颜色..您可以使用IValueConverter将画笔转换为颜色..

HTH