使扩展器控件标头变为粗体

时间:2014-06-03 10:48:35

标签: c# wpf expander

我将在运行时动态创建 n 数量的扩展器控件,如下所示,

theExpanderCaption[counter] = new TextBlock();
theExpanderCaption[counter].FontWeight = FontWeights.Bold;
theExpanderCaption[counter].Text = ITEMIMP.DataConstants.GroupIds.GetGroupCaption(group.GroupId);

theGroupExpander[counter] = new Expander();
theGroupExpander[counter].Header = theExpanderCaption[counter];
theGroupExpander[counter].Margin = new Thickness(10);
theGroupExpander[counter].HorizontalAlignment = HorizontalAlignment.Left;
theGroupExpander[counter].IsExpanded = true;
theGroupExpander[counter].Content = this.theGroupGrids[counter];
theGroupExpander[counter].Style = null;

在上面的代码中,我使用文本块的数组来设置扩展器头(使其变为粗体)。这里的缺点是我必须使用 n no 文本块控件。还有其他方法可以达到这个目的吗?

3 个答案:

答案 0 :(得分:5)

在您的窗口/页面资源中添加以下内容。这将应用于窗口中的所有扩展器

        <DataTemplate x:Key="HeaderTemplate">
               <TextBlock Text="{Binding}" 
                    VerticalAlignment="Center"
                    FontWeight="Bold"
                    Width="{Binding
                    RelativeSource={RelativeSource
                    Mode=FindAncestor,
                    AncestorType={x:Type Expander}},
                    Path=ActualWidth}"
                    TextWrapping="Wrap"/>
        </DataTemplate>

        <Style TargetType="{x:Type Expander}">
            <Setter Property="HeaderTemplate" Value="{StaticResource HeaderTemplate}"/>
        </Style>

答案 1 :(得分:3)

看到你的标记会很有帮助,但我认为你有这样的东西:

<Expander Header="My Header">
    ...
</Expander>

您可以像这样指定标题,并设置您想要的所有格式选项:

<Expander>
    <Expander.Header>
        <TextBlock Text="My Header" FontWeight="Bold" />
    </Expander.Header>
    ...
</Expander>

答案 2 :(得分:0)

您可以在运行时创建FormattedText并设置为Header。在FormattedText的构造函数中,您可以定义前景画笔。