WPF样式-请帮助我理解为什么它是这样工作的
如果setter被指定为Window.background,为什么按钮实际上会得到橙色背景 这不会给文本块一个橙色背景: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}"/> 感谢它之所以能工作,是因为背
<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}"/>