Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何覆盖WPF中BackgroundProperty的默认值?_Wpf - Fatal编程技术网

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

如何覆盖WPF中BackgroundProperty的默认值?,wpf,Wpf,我正在构建一个自定义WPF控件。在该控件中,我希望覆盖BackgroundProperty的默认值,以便该控件的所有实例都具有灰色背景。为了实现这一点,我在控件中有一个静态构造函数,包含以下内容: static CustomControl() { CustomControl.BackgroundProperty.OverrideMetadata( typeof(CustomControl), new FrameworkPropertyMetadata(B

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

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的默认背景色。也许我是用错误的方式来处理这个问题。。