在WPF中GroupBox控件的Header属性如何实现多重绑定?

问题描述

在WPF中GroupBox控件的Header属性如何实现多重绑定。看的没错,就是GroupBox控件Header属性。

问题出现的环境背景及自己尝试过哪些方法

单个绑定的实现很简单:

相关代码

<GroupBox Header="{Binding Name}" HeaderStringFormat="{}姓名:{0}">

你期待的结果是什么?实际看到的错误信息又是什么?

我希望实现两个值的绑定,包括姓名和年龄。该如何实现呢?

阅读 5.3k
2 个回答
/* 使用模板 */
<GroupBox Header="{Binding}" HeaderTemplate="{StaticResource GroupBoxHeaderData}"/>
/* 构造模板 */
<!--GroupBox Header Style Template(Base)-->
<Style x:Key="GroupBoxHeaderStyle" TargetType="HeaderedContentControl">
    <Setter Property="OverridesDefaultStyle" Value="True" />
    <Setter Property="SnapsToDevicePixels" Value="True" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type HeaderedContentControl}">
                <ContentPresenter ContentSource="Header"/>
             /ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

<DataTemplate x:Key="GroupBoxHeaderData">
    <TextBlock>
        <TextBlock.Text>
            <MultiBinding StringFormat="{}姓名:{0},年龄{1}">
                <Binding Path="Name"/>
                <Binding Path="Age"/>
            </MultiBinding>
         </TextBlock.Text>
    </TextBlock>
</DataTemplate>

并不需要整这么复杂
因为Header可以是控件
所以在简单应用场景下完全不需要写什么Style,什么DataTemplate

<GroupBox HeaderTemplate="{StaticResource GroupBoxHeaderData}">
    <GroupBox.Header>
        <TextBlock>
            <TextBlock.Text>
                <MultiBinding StringFormat="{}姓名:{0},年龄{1}">
                    <Binding Path="Name"/>
                    <Binding Path="Age"/>
                </MultiBinding>
             </TextBlock.Text>
        </TextBlock>
    </GroupBox.Header>
</GroupBox>
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进