Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.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样式-请帮助我理解为什么它是这样工作的_Wpf_Xaml_Styles - Fatal编程技术网

WPF样式-请帮助我理解为什么它是这样工作的

WPF样式-请帮助我理解为什么它是这样工作的,wpf,xaml,styles,Wpf,Xaml,Styles,如果setter被指定为Window.background,为什么按钮实际上会得到橙色背景 这不会给文本块一个橙色背景: <Style x:Key="MyStyle"> <Setter Property="Window.Background" Value="Orange"/> </Style> <Button Content="Ok" Style="{StaticResource MyStyle}"/> 感谢它之所以能工作,是因为背

如果setter被指定为Window.background,为什么按钮实际上会得到橙色背景

这不会给文本块一个橙色背景:

<Style x:Key="MyStyle">
    <Setter Property="Window.Background" Value="Orange"/>
</Style>

<Button Content="Ok" Style="{StaticResource MyStyle}"/>


感谢它之所以能工作,是因为
背景
属性被附加到
窗口
按钮
作为祖先的类上按钮
窗口
都没有实际定义
背景
属性,它们都从
控件继承它


因此,即使您编写了
Window.Background
,setter实际上还是通过使用
控件.BackgroundProperty
字段绑定到属性,该字段也应用于
按钮

,谢谢Sven!但是为什么文本块的背景不是橙色的呢?TextBlock还继承自Control…@Gustavo,直接继承自
FrameworkElement
,而非
Control
。事实上,TextBlock并不继承自Control,而是定义自己的背景属性,因此设置TextBlock背景的唯一方法是直接在TextBlock.Background上使用Setter。
<TextBlock Style="{StaticResource MyStyle}"/>