Windows或App级别的WPF样式会产生不同的结果

时间:2016-01-19 15:07:19

标签: c# wpf styling

我正在尝试在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标题框仅为粗体,而不是斜体。

有人可以解释这种行为吗?

1 个答案:

答案 0 :(得分:1)

在选择TextBlock时,你已经挖掘了一些东西。 TextBlock不是从Control派生的,因此行为略有不同。

请参阅https://stackoverflow.com/a/27065140/4258144

  

WPF中有一个奇怪的规则隐式样式只是继承的   跨越模板边界的元素继承自Control   类

我想你可以添加,“除非它在App.xaml中全局指定”。

更新:

以下是评论,这里是一个从Snoop获取的GroupBox可视树。

enter image description here