如何在WPF中覆盖BackgroundProperty的默认值?

时间:2013-01-17 12:04:54

标签: wpf

我正在构建一个自定义WPF控件。在此控件中,我想覆盖BackgroundProperty的默认值,以便控件的所有实例都具有灰色背景。为实现这一点,我在控件中有一个静态构造函数,其中包含以下内容:

static CustomControl() {
    CustomControl.BackgroundProperty.OverrideMetadata(
        typeof(CustomControl), 
        new FrameworkPropertyMetadata(Brushes.Gray)
    );
}

但是,在测试控件时,背景仍然设置为透明,即使我没有在XAML中指定Background属性的任何值:

 <c:CustomControl />

有谁知道我做错了什么?

1 个答案:

答案 0 :(得分:2)

您的属性覆盖是正确的方法。但是,您的控件模板需要实际使用Background属性。您还没有向我们展示您的模板,但它需要包含以下内容:

<Border Background="{TemplateBinding Background}" ...

编辑:我认为你的问题是造成混乱,因为你说的是​​自定义控件,当你实际上可能意味着自定义用户控件时。请澄清。