在WPF中使用Multibinding时是否必须使用转换器?

时间:2013-04-02 08:21:26

标签: wpf binding multibinding converters

我想知道是否存在可以使用不带转换器的多重绑定的情况 - 以及迫使我们使用转换器的限制。

特别是我试图将字符串绑定到string.format样式中的另外两个字符串。

1 个答案:

答案 0 :(得分:2)

在没有转换器的情况下使用MultiBinding的最常见区域是当您使用字符串格式连接两个单独的值时

比如说:

格式化具有First,Last部分的名称,并且您希望根据区域设置

对其进行格式化
<StackPanel>
  <TextBlock x:Name="firstName"
              Text="John" />
  <TextBlock x:Name="lastName"
              Text="Wayne" />
  <TextBlock>
    <TextBlock.Text>
      <MultiBinding StringFormat="{}{0} {1}">
        <Binding ElementName="firstName"
                  Path="Text" />
        <Binding ElementName="lastName"
                  Path="Text" />
      </MultiBinding>
    </TextBlock.Text>
  </TextBlock>
</StackPanel>

你确实看到很多地方使用转换器,因为使用MultiBinding你做的事情和Binding一样,但你有多个源值被格式化为单个结果而不是单个输入 - &GT;单输出。

你可以让Binding取一个ConverterParameter来提供另一个输入值但是你有一些限制,比如无法为它提供运行时Bound值,这使得MultiBinding更适合于多个输入你想绑定所有这些。

归结为您的用例,如果您想根据自定义方式评估的不同输入类型提供结果,则需要一个转换器(与Binding非常相似。只需将其区分为1输入可绑定值对多个)