如何覆盖WPF中BackgroundProperty的默认值?
我正在构建一个自定义WPF控件。在该控件中,我希望覆盖BackgroundProperty的默认值,以便该控件的所有实例都具有灰色背景。为了实现这一点,我在控件中有一个静态构造函数,包含以下内容:如何覆盖WPF中BackgroundProperty的默认值?,wpf,Wpf,我正在构建一个自定义WPF控件。在该控件中,我希望覆盖BackgroundProperty的默认值,以便该控件的所有实例都具有灰色背景。为了实现这一点,我在控件中有一个静态构造函数,包含以下内容: static CustomControl() { CustomControl.BackgroundProperty.OverrideMetadata( typeof(CustomControl), new FrameworkPropertyMetadata(B
static CustomControl() {
CustomControl.BackgroundProperty.OverrideMetadata(
typeof(CustomControl),
new FrameworkPropertyMetadata(Brushes.Gray)
);
}
但是,在测试控件时,背景仍然设置为透明,即使我没有在XAML中指定背景属性的任何值:
<c:CustomControl />
有人知道我做错了什么吗 您的属性覆盖是正确的方法。但是,控件模板需要实际使用
Background
属性。您尚未向我们展示您的模板,但它需要包括以下内容:
<Border Background="{TemplateBinding Background}" ...
一些xaml是有用的,我想读一下这个答案:谢谢你的帮助,肯特!我正在创建一个自定义ScatterView控件(我们称之为CustomScatterView),它通过添加拖放支持来扩展ScatterView控件。CustomScatterView控件的模板为空,因为我不希望向该控件添加任何其他UI元素。但是,我想更改CustomScatterView的默认背景色。也许我是用错误的方式来处理这个问题。。