0

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

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

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

 <c:CustomControl />

有谁知道我做错了什么?

4

1 回答 1

2

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

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

编辑:我认为您的问题正在造成混乱,因为您说的是自定义控件,而实际上您可能指的是自定义用户控件。请说清楚。

于 2013-01-17T12:10:48.587 回答