将两个字段合并为一个文本内容wpf

时间:2012-04-24 10:44:50

标签: wpf

我想在Song的标题中组合歌曲的名称和ID。如果我有:

是否可能
Song
{
   public string Name {get; set;}
   public int ID {get; set;}
}

我想将它们绑定到Expander的Header中。目前,只与一个属性绑定。它是这样的:

<Expander Foreground="#FFF4E7CA"  Header="{Binding Song.Name}" FontWeight="Bold">
</Expander>

但我希望成为这样的事情:

Header = "{Binding Some.Name, Song.ID}" 

那么有可能吗?如果是,怎么样?提前致谢。

3 个答案:

答案 0 :(得分:7)

这样的事情:

<Expander ...>
  <Expander.Header>
    <TextBlock>
      <TextBlock Text="{Binding Song.Name}"/>
      <TextBlock Text=" "/>
      <TextBlock Text="{Binding Sond.ID}"/>
    </TextBlock>
  </Expander.Header>
  ...
</Expander>

答案 1 :(得分:5)

你可以

1)在您的视图模型上公开一个新属性并绑定到该

Song
{
   public string Name {get; set;}
   public int ID {get; set;}
   public string Header {get { return string.Format("{0} {1}", Name, ID); } }
}

2)使用带字符串格式的多重绑定

<TextBlock.Text>
    <MultiBinding StringFormat="{}{0} {1}">
        <Binding Path="Song.Name"/>
        <Binding Path="Song.Id"/>
    </MultiBinding>
</TextBlock.Text>

3)如果您使用的是WPF4,那么Run是可绑定的,因此有关使用Run的答案将有效。

答案 2 :(得分:1)

是的,您可以使用the multibinding class