以GroupBox样式设置GroupBox的标题

时间:2015-01-14 20:43:24

标签: c# wpf xaml header groupbox

我在多次使用某个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

有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:1)

您无法将标题的内容设置为样式中的另一个UI控件。尝试创建datatemplate。

<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>