Qual è la sintassi XAML più breve per MultiBinding usando StringFormat con più associazioni?
-
13-09-2019 - |
Domanda
per un singolo legame, usiamo:
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{0}">
<Binding Path=EmployeeName/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
o una sintassi più breve:
<TextBlock
Text="{MultiBinding StringFormat=\{0\}, Bindings={Binding Path=EmployeeName}}"/>
Ora, se si dispone di MultiBinding:
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{0}, {2}">
<Binding Path="EmployeeName"/>
<Binding Path="Age"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
Mi chiedevo, quale sarebbe la sua sintassi più breve?
<TextBlock
Text="{MultiBinding StringFormat=\{0\}, Bindings={Binding ??????}"/>
Soluzione
Secondo MSDN, il tuo secondo esempio ( "la sintassi più breve utilizzando MultiBinding con un singolo Binding") non dovrebbe funzionare, né in . net 3.5 né in net 4.0 :
Nota:
MultiBinding e PriorityBinding non supportano una sintassi estensione XAML (nonostante la condivisione della stessa classe BindingBase, che implementa in realtà il comportamento XAML per Binding).
Quindi, se funziona per voi, questo è per caso, e non è supportato comportamento.
PS: Non c'è bisogno di usare MultiBinding per un solo di legame. Il seguente dovrebbe essere sufficiente:
<TextBlock>
<TextBlock.Text>
<Binding Path="EmployeeName" />
</TextBlock.Text>
</TextBlock>
o
<TextBlock Text="{Binding Path=EmployeeName}"/>
o anche più breve
<TextBlock Text="{Binding EmployeeName}"/>