3

コンバーターなしでマルチバインディングを使用できるシナリオがあるかどうか、およびコンバーターの使用を強制する制限があるかどうかを知りたいです。

特に、string.format スタイルで文字列を別の 2 つの文字列にバインドしようとしています。

4

1 に答える 1

3

コンバーターなしで使用する最も一般的な領域MultiBindingは、2 つの個別の値を連結する文字列形式がある場合です。

たとえば、次のように言います。

名前の最初と最後の部分を書式設定し、ロケールに基づいて書式設定する場合

<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を使用して aと同じことを行っているため、コンバーターを使用する場所がかなり多く見られBindingますが、単一の入力ではなく単一の結果にフォーマットされた複数のソース値があります->単一の出力。

別の入力値を提供するために Binding をConverterParameter使用できますが、ランタイムの Bound 値を提供できないなどの制限があるため、MultiBindingすべてをバインドする複数の入力に適しています。

それはあなたのユースケースに要約されます。カスタム方法で評価するさまざまな入力タイプに基づいて結果を提供したい場合は、コンバーターが必要です(バインディングとほとんど同じです。違いを1つの入力バインドと考えてください-複数に対して可能な値)

于 2013-04-02T08:54:58.113 に答える