2013-04-04 123 views
14

我输了GroupBox,他们的标题文字必须是Bold。我知道如何做到这一点的一个GroupBox如何使用GroupBox标题的样式?

<GroupBox> 
    <GroupBox.Header> 
     <TextBlock Text="HEADER TEXT" FontWeight="Bold"/> 
    </GroupBox.Header> 
</GroupBox> 

但我想知道如何与Styles做到这一点。这是我曾尝试:

<Style TargetType="GroupBox"> 
    <Setter Property="BorderBrush" Value="{StaticResource lightBlueBrush}"/> 
    <Setter Property="Margin" Value="25,1,5,5"/> 
    //<Setter ?? 
</Style> 

我已经试过<Setter Property="HeaderTemplate" Value={StaticResource myTemp}>myTemp是一个简单的DataTemplate但是VS突然关门!我不知道我是否以正确的方式做到这一点,所以任何人都可以帮助我?

编辑:请在发布它作为答案之前测试您的想法!

+2

LOL *请在发布之前测试您的想法作为答案!* - 请给我们提供信息,以便我们能够帮助您。 *抛出异常*是不够的。至少需要说明例外的内容,告诉你什么是错的。 – DHN 2013-04-04 11:23:50

回答

24

您是否尝试过以下方法?

<Style TargetType="GroupBox"> 
    <Setter Property="BorderBrush" Value="{StaticResource lightBlueBrush}"/> 
    <Setter Property="Margin" Value="25,1,5,5"/> 
    <Setter Property="HeaderTemplate"> 
     <Setter.Value> 
      <DataTemplate> 
       <TextBlock Text="{Binding}" FontWeight="Bold"/> 
      </DataTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

用法:

<GroupBox Header="Title" /> 
+1

是的,我尝试了这样的事情,但设计师抛出异常 – 2013-04-04 10:36:21

+0

你尝试过我发布的内容吗?设计师抛出什么样的例外? – DHN 2013-04-04 11:16:18

+0

您是否更改了解决方案?我试过了,这次它工作。谢谢。 – 2013-04-04 11:28:41

1

甲groupboxs HeaderTemplate中是一种类型的DataTemplate的。所以你应该提供一个保证样式或模板的数据模板对象。

试试下面一个。

<Window.Resources> 

     <DataTemplate x:Key="DataTemplate1"> 
      <TextBlock Text="Test Templated Header"/> 
     </DataTemplate> 

    </Window.Resources> 
    <Grid> 
     <GroupBox Header="Test Header" HeaderTemplate="{StaticResource DataTemplate1}"> 
      <Border BorderBrush="Red" Margin="10"> 
       <TextBlock Text="Hello"/> 
      </Border> 
     </GroupBox> 
    </Grid> 
+1

所以GroupBox的头部将是“Test Header”或“Test Templated Header” – 2013-04-04 11:15:48

+0

我试过了,没有工作(标题文本有问题)。 – 2013-04-04 11:17:56

+0

它对我来说工作正常 – ghord 2013-04-04 11:24:14