Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.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
C# 如何在对自定义控件使用绑定时允许默认值_C#_Wpf_Xaml_.net 4.0_Styles - Fatal编程技术网

C# 如何在对自定义控件使用绑定时允许默认值

C# 如何在对自定义控件使用绑定时允许默认值,c#,wpf,xaml,.net-4.0,styles,C#,Wpf,Xaml,.net 4.0,Styles,总之,我正在开发一个自定义控件,该控件具有边框,背景设置如下 <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> <GradientStop Color="#FFF7F7F7" Offset="0.164" /> <GradientStop Color="#FFDBDBDB" Offset="0.664" /> <GradientStop Color="#FFB3B3

总之,我正在开发一个自定义控件,该控件具有
边框
,背景设置如下

<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
    <GradientStop Color="#FFF7F7F7" Offset="0.164" />
    <GradientStop Color="#FFDBDBDB" Offset="0.664" />
    <GradientStop Color="#FFB3B3B3" Offset="0.978" />
</LinearGradientBrush>

但是,我希望允许用户覆盖此选项。我创建了一个类型为
Brush
的依赖属性,但是我不知道如何绑定到后台,而XAML中仍然有这个默认值。这可能吗?

看看


然后在默认ControlTemplate的某些部分:

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

....
这将允许使用者覆盖默认背景,同时保持定义的样式:

<your:YourControl/> <!-- Will use default Background -->

<your:YourControl Background="Green"/> <!-- will have Green background -->

只是为了向未来的任何人澄清
Background
必须保持为空,以实现舍入和其他美学效果,因此我必须创建一个
WindowBackground
依赖属性。但是,
Background
可以替换为控件的任何依赖项属性,即使是自定义属性:)
<your:YourControl/> <!-- Will use default Background -->

<your:YourControl Background="Green"/> <!-- will have Green background -->