¿Cuál es la sintaxis XAML más corto para MultiBinding usando StringFormat con varios enlaces?
-
13-09-2019 - |
Pregunta
para una sola unión, usamos:
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{0}">
<Binding Path=EmployeeName/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
o una sintaxis más corta:
<TextBlock
Text="{MultiBinding StringFormat=\{0\}, Bindings={Binding Path=EmployeeName}}"/>
Ahora, si usted tiene unión múltiple:
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{0}, {2}">
<Binding Path="EmployeeName"/>
<Binding Path="Age"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
Me preguntaba, ¿cuál sería su sintaxis más corta?
<TextBlock
Text="{MultiBinding StringFormat=\{0\}, Bindings={Binding ??????}"/>
Solución
Según MSDN, su segundo ejemplo ( "sintaxis más corta usando MultiBinding con una sola Binding") no debe trabajar, tampoco en . net 3.5 ni en neto 4,0 :
Nota:
MultiBinding y PriorityBinding no soportan una sintaxis extensión XAML (a pesar de compartir la misma clase BindingBase, que en realidad implementa el comportamiento XAML para atar).
Así que, si funciona para ti, eso es por accidente, y no es soportado comportamiento.
PD: no es necesario utilizar MultiBinding para un solo vinculante. El siguiente debería ser suficiente:
<TextBlock>
<TextBlock.Text>
<Binding Path="EmployeeName" />
</TextBlock.Text>
</TextBlock>
o
<TextBlock Text="{Binding Path=EmployeeName}"/>
o incluso más corto
<TextBlock Text="{Binding EmployeeName}"/>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow