Quelle est la syntaxe XAML plus courte pour MultiBinding en utilisant StringFormat avec plusieurs liaisons?
-
13-09-2019 - |
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 ??????}"/>
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}"/>