8

シングルバインディングの場合、以下を使用します。

<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 ??????}"/>
4

1 に答える 1

5

MSDNによると、2番目の例(「単一のバインディングでMultiBindingを使用する短い構文」)は、.net3.5でも.net4.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}"/>
于 2009-12-07T16:26:05.823 に答える