3

我想知道是否在某些情况下您可以在没有转换器的情况下使用多重绑定 - 以及迫使我们使用转换器的限制。

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

4

1 回答 1

3

在没有转换器的情况下使用 a 的最常见区域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>

您确实看到很多使用转换器的地方,因为使用 aMultiBinding您的操作与 a 相同,Binding但是您将多个源值格式化为单个结果而不是单个输入 -> 单个输出。

您可以使用 BindingConverterParameter来提供另一个输入值,但是您有一些限制,例如无法为其提供运行时 Bound 值,这MultiBinding更适合您想要绑定所有输入的多个输入。

它归结为您的用例,如果您想根据您以自定义方式评估的不同输入类型提供结果,您需要一个转换器(非常类似于绑定。只需将差异视为 1 个输入绑定- 能够对抗多个值)

于 2013-04-02T08:54:58.113 回答