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

oli*_*dev 2 wpf

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

Song
{
   public string Name {get; set;}
   public int ID {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

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

<Expander Foreground="#FFF4E7CA"  Header="{Binding Song.Name}" FontWeight="Bold">
</Expander>
Run Code Online (Sandbox Code Playgroud)

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

Header = "{Binding Some.Name, Song.ID}" 
Run Code Online (Sandbox Code Playgroud)

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

Nic*_*uet 7

像这样的东西:

<Expander ...>
  <Expander.Header>
    <TextBlock>
      <TextBlock Text="{Binding Song.Name}"/>
      <TextBlock Text=" "/>
      <TextBlock Text="{Binding Sond.ID}"/>
    </TextBlock>
  </Expander.Header>
  ...
</Expander>
Run Code Online (Sandbox Code Playgroud)


Phi*_*hil 5

你可以

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

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

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

<TextBlock.Text>
    <MultiBinding StringFormat="{}{0} {1}">
        <Binding Path="Song.Name"/>
        <Binding Path="Song.Id"/>
    </MultiBinding>
</TextBlock.Text>
Run Code Online (Sandbox Code Playgroud)

3)如果您正在使用WPF4,那么它Run是可绑定的,因此有关使用的答案Run将起作用.