以 GroupBox 样式设置 GroupBox 的页眉

Setting the Header of GroupBox in a GroupBox style

我在多次使用某个 GroupBox 样式时收到 XAML 解析异常。我保持 UserControl.Resources.

中的样式

这是一个简化样式的示例,不会导致XAML解析异常:

<Style x:Key="MyGroupBoxStyle" TargetType="GroupBox" BasedOn="{StaticResource {x:Type GroupBox}}">
    <Setter Property="BorderThickness" Value="5" />
    <Setter Property="Header" Value="Hello World!" />
</Style>

这是另一个不会引起问题的。

<Style x:Key="MyGroupBoxStyle" TargetType="GroupBox" BasedOn="{StaticResource {x:Type GroupBox}}">
    <Setter Property="BorderThickness" Value="5" />
    <Setter Property="Header">
        <Setter.Value>
            Hello World!
        </Setter.Value>
    </Setter>
</Style>

但是这个 确实 引起了问题:

<Style x:Key="MyGroupBoxStyle" TargetType="GroupBox" BasedOn="{StaticResource {x:Type GroupBox}}">
    <Setter Property="BorderThickness" Value="5" />
    <Setter Property="Header">
        <Setter.Value>
            <TextBlock Text="Hello World!" />
        </Setter.Value>
    </Setter>
</Style>

同样,只有当我在 多个 GroupBox 上使用该样式时才会出现问题。如果我只使用它一次,我不会得到 XAML 解析异常。它不一定只是 TextBlock。我认为它是任何 UIElement.

有什么想法吗?谢谢!

您不能将 header 的内容设置为样式中的另一个 UI 控件。尝试创建一个数据模板。

<Window.Resources>
    <Style x:Key="MyGroupBoxStyle" TargetType="GroupBox" BasedOn="{StaticResource {x:Type GroupBox}}">
        <Setter Property="BorderThickness" Value="5" />
        <Setter Property="HeaderTemplate">
            <Setter.Value>
                <DataTemplate>
                    <TextBlock Text="Hello World!!!!!!"/>
                </DataTemplate>                    
            </Setter.Value>
        </Setter>
    </Style>
</Window.Resources>
<StackPanel>
    <GroupBox Style="{StaticResource MyGroupBoxStyle}" Height="200" Width="200"/>
    <GroupBox Style="{StaticResource MyGroupBoxStyle}" Height="200" Width="200"/>
</StackPanel>