使用具有多个绑定的StringFormat进行Multibinding的较短xaml语法是什么?

时间:2009-12-07 16:15:19

标签: wpf xaml binding multibinding string-formatting

对于单个绑定,我们使用:

<TextBlock>
  <TextBlock.Text>
    <MultiBinding StringFormat="{}{0}">
      <Binding Path=EmployeeName/>
    </MultiBinding>
  </TextBlock.Text>
</TextBlock>

或更短的语法:

<TextBlock 
 Text="{MultiBinding StringFormat=\{0\}, Bindings={Binding Path=EmployeeName}}"/>

现在,如果您有多重绑定:

<TextBlock>
  <TextBlock.Text>
    <MultiBinding StringFormat="{}{0}, {2}">
      <Binding Path="EmployeeName"/>
      <Binding Path="Age"/>
    </MultiBinding>
  </TextBlock.Text>
</TextBlock>

我想知道,它的语法会更短吗?

<TextBlock 
 Text="{MultiBinding StringFormat=\{0\}, Bindings={Binding ??????}"/>

1 个答案:

答案 0 :(得分:5)

根据MSDN,您的第二个示例(“使用带有单个绑定的MultiBinding的较短语法”)不应该在.net 3.5.net 4.0中都有效:

  

注意:

     

MultiBinding和PriorityBinding不支持XAML扩展语法(尽管共享相同的BindingBase类,它实际上实现了Binding的XAML行为)。

所以,如果它适合你,那是偶然的,并且它不受支持的行为。


PS:您不需要将MultiBinding用于单个绑定。以下就足够了:

<TextBlock>
    <TextBlock.Text>
        <Binding Path="EmployeeName" />
    </TextBlock.Text>
</TextBlock>

<TextBlock Text="{Binding Path=EmployeeName}"/>

甚至更短

<TextBlock Text="{Binding EmployeeName}"/>