O que é a sintaxe XAML mais curto para MultiBinding usando StringFormat com várias ligações?
-
13-09-2019 - |
Pergunta
para a ligação de um único, usamos:
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{0}">
<Binding Path=EmployeeName/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
ou uma sintaxe mais curta:
<TextBlock
Text="{MultiBinding StringFormat=\{0\}, Bindings={Binding Path=EmployeeName}}"/>
Agora, se você tiver ligações múltiplas:
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{0}, {2}">
<Binding Path="EmployeeName"/>
<Binding Path="Age"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
Eu estava pensando, o que seria o seu menor sintaxe?
<TextBlock
Text="{MultiBinding StringFormat=\{0\}, Bindings={Binding ??????}"/>
Solução
De acordo com MSDN, o seu segundo exemplo ( "mais curto sintaxe usando MultiBinding com um único Binding") não devem trabalho, nem em . net 3,5 nem em net 4.0 :.
Nota:
MultiBinding e PriorityBinding não suportam uma sintaxe de extensão XAML (apesar de compartilhar a mesma classe BindingBase, o que realmente implementa o comportamento XAML para a ligação).
Então, se ele funciona para você, que é por acaso, e não é suportado comportamento.
PS: Você não precisa usar MultiBinding para um única obrigatório. O seguinte deve ser suficiente:
<TextBlock>
<TextBlock.Text>
<Binding Path="EmployeeName" />
</TextBlock.Text>
</TextBlock>
ou
<TextBlock Text="{Binding Path=EmployeeName}"/>
ou até mesmo mais curto
<TextBlock Text="{Binding EmployeeName}"/>