我正在尝试在WPF中学习样式并遇到一个有趣的事情:
在应用程序或(主要)窗口级别应用样式时会有所不同。
当我在 App.xaml 中定义以下资源时:
<Application.Resource>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="FontStyle" Value="Italic" />
</Style>
<Style TargetType="{x:Type GroupBox}">
<Setter Property="FontWeight" Value="Bold" />
</Style>
<Application.Resource>
GroupBox标题是粗体和斜体。
当我在 MainWindow.xaml 中定义样式时:
<Window.Resources>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="FontStyle" Value="Italic" />
</Style>
<Style TargetType="{x:Type GroupBox}">
<Setter Property="FontWeight" Value="Bold" />
</Style>
</Window.Resources>
GroupBox标题框仅为粗体,而不是斜体。
有人可以解释这种行为吗?
答案 0 :(得分:1)
在选择TextBlock时,你已经挖掘了一些东西。 TextBlock不是从Control派生的,因此行为略有不同。
请参阅https://stackoverflow.com/a/27065140/4258144:
WPF中有一个奇怪的规则隐式样式只是继承的 跨越模板边界的元素继承自Control 类
我想你可以添加,“除非它在App.xaml中全局指定”。
更新:
以下是评论,这里是一个从Snoop获取的GroupBox可视树。