Quelle est la syntaxe XAML plus courte pour MultiBinding en utilisant StringFormat avec plusieurs liaisons?

StackOverflow https://stackoverflow.com/questions/1861009

Question

pour une seule liaison, nous utilisons:

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

ou une syntaxe plus courte:

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

Maintenant, si vous avez MultiBinding:

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

Je me demandais, quelle serait sa syntaxe plus courte?

<TextBlock 
 Text="{MultiBinding StringFormat=\{0\}, Bindings={Binding ??????}"/>
Était-ce utile?

La solution

Selon MSDN, votre deuxième exemple ( « syntaxe plus courte en utilisant MultiBinding avec une seule liaison ») ne devrait pas fonctionner, ni dans . net 3,5 ni net 4,0 :

  

Note:

     

MultiBinding et PriorityBinding ne prennent pas en charge une syntaxe d'extension de XAML (malgré le partage de la même classe BindingBase, qui met effectivement en œuvre le comportement XAML pour la liaison).

Donc, si cela fonctionne pour vous, c'est par hasard, et il est pas pris en charge le comportement.


PS: Vous n'avez pas besoin d'utiliser MultiBinding pour à obligatoire. Ce qui suit devrait suffire:

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

ou

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

ou même plus court

<TextBlock Text="{Binding EmployeeName}"/>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top