我正在构建一个自定义WPF控件。在此控件中,我想覆盖BackgroundProperty的默认值,以便控件的所有实例都具有灰色背景。为实现这一点,我在控件中有一个静态构造函数,其中包含以下内容:
static CustomControl() {
CustomControl.BackgroundProperty.OverrideMetadata(
typeof(CustomControl),
new FrameworkPropertyMetadata(Brushes.Gray)
);
}
但是,在测试控件时,背景仍然设置为透明,即使我没有在XAML中指定Background属性的任何值:
<c:CustomControl />
有谁知道我做错了什么?
答案 0 :(得分:2)
您的属性覆盖是正确的方法。但是,您的控件模板需要实际使用Background
属性。您还没有向我们展示您的模板,但它需要包含以下内容:
<Border Background="{TemplateBinding Background}" ...
编辑:我认为你的问题是造成混乱,因为你说的是自定义控件,当你实际上可能意味着自定义用户控件时。请澄清。