XAML:如何使GroupBox标题的一部分变为粗体?

时间:2016-12-21 19:06:54

标签: wpf xaml header styles groupbox

我需要将GroupBox Header的第一部分设为粗体,将另一部分设为非粗体。这是我想要实现的目标:

学生(最多:32)

        <GroupBox Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="4" Margin="40, 80, 40, 80">
        <GroupBox.Header>
            <Span FontWeight="Bold">Students</Span>
            (Max: 32)
        </GroupBox.Header>
        <StackPanel>
        ...

这给了我错误:属性“Header”被设置了不止一次。

我知道它适用于TextBlocks,但我不能让GroupBox Headers成为现实:

        <TextBlock>
            <Span FontWeight="Bold">Students</Span>
            <Span>(Max: 32)</Span>
        </TextBlock>

感谢。

2 个答案:

答案 0 :(得分:4)

GroupBox.Header只能包含一件事,但有一点可以是你喜欢的任何东西。例如,它可以是具有部分粗体内容的TextBlock

<GroupBox.Header>
    <TextBlock>
        <Span FontWeight="Bold">Students</Span>
        <Span>(Max: 32)</Span>
    </TextBlock>
</GroupBox.Header>

在XAML中,许多控件都具有名为ContentHeader的属性,这些属性的类型为Object。你总是可以给string,但你也可以使用你喜欢的任何模板化或格式化的内容。在Windows窗体中,您的菜单项标题或组合框标题必须是字符串,除非您有心情花时间使用所有者绘制代码。在XAML中,它们可以是XAML可以渲染的任何东西,到了荒谬的程度:

<GroupBox>
    <GroupBox.Header>
        <GroupBox Header="I Heard You Like GroupBox Headers">
            LOL
        </GroupBox>
    </GroupBox.Header>
    <GroupBox Header="Content Box">Content</GroupBox>
</GroupBox>

这就像一把无限递归的瑞士军刀,每把刀都是瑞士军刀,就像它的父母一样。

enter image description here

答案 1 :(得分:1)

 <GroupBox.Header>
                <TextBlock>
                    <Span FontWeight="Bold">Students</Span>
                    <Span>(Max: 32)</Span>
                    </TextBlock>
            </GroupBox.Header>