WPF 模板/样式问题

标签 wpf styling templating

鉴于这段 XAML

<DockPanel>
  <DockPanel.Resources>
    <Style TargetType="{x:Type GroupBox}">
      <Setter Property="Template">
        <Setter.Value>
          <ControlTemplate TargetType="{x:Type GroupBox}">
            <DockPanel>
              <Border DockPanel.Dock="Top">
                <Border.Resources>
                  <Style TargetType="{x:Type TextBlock}">
                    <Setter Property="Foreground"
                        Value="Red" />
                  </Style>
                </Border.Resources>
                <ContentPresenter ContentSource="Header" />
              </Border>
              <ContentPresenter />
            </DockPanel>
          </ControlTemplate>
        </Setter.Value>
      </Setter>
    </Style>
  </DockPanel.Resources>

  <GroupBox VerticalAlignment="Top"
      Header="GroupBox header"
      DockPanel.Dock="Top">

    ...
    ...

我想知道为什么组框标题不以红色字母显示。

我已经尝试过设置 Label 类型的样式,但也没有成功。

(抱歉,帖子标题过于笼统……我想不出更有意义的东西)

最佳答案

此代码解决了问题:

<DockPanel>
  <DockPanel.Resources>
    <Style TargetType="{x:Type GroupBox}">
      <Setter Property="HeaderTemplate">
        <Setter.Value>
          <DataTemplate>
            <DataTemplate.Resources>
              <Style TargetType="Label">
                <Style.Setters>
                  <Setter Property="Foreground" Value="Red" />
                </Style.Setters>
              </Style>
            </DataTemplate.Resources>
            <Label Content="{Binding}" />
          </DataTemplate>
        </Setter.Value>
      </Setter>
    </Style>
  </DockPanel.Resources>

  <GroupBox VerticalAlignment="Top" Header="GroupBox header" DockPanel.Dock="Top">
  ...
  ...

但是,我仍然不知道为什么建议的代码不起作用。

关于WPF 模板/样式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1791349/

相关文章:

javascript - Angular 类似 Handlebars 的模板

css - 如何在 Polymer 模板中使用 bool 值切换类?

c# - WPF UI 线程被大集合阻塞

html - 仅使用 css 的换行符(如 <br>)

javascript - 对输入字段的最后 x 个字符应用不同的样式

c# - 像在 Visual Studio 中一样标记滚动条

C#/WPF : Disable Text-Wrap of RichTextBox

用于在 wpf 数据网格中选择所有复选框的 c# 代码

c# - 如何读取/编辑 CefSharp 本地存储

asp.net - 如何将模板添加到用户控件?