2009-12-07 15 views
8

para una sola unión, podemos utilizar:¿Cuál es la sintaxis xaml más corta para Multibinding usando StringFormat con enlaces múltiples?

<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 mas corta?

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

Respuesta

5

Según MSDN, el segundo ejemplo ("sintaxis más corta usando MultiBinding con un solo encuadernado") no deben trabajar, ni en .net 3.5 ni en .net 4.0:

Nota:

MultiBinding y PriorityBinding no admiten una sintaxis de extensión XAML (a pesar de compartir la misma clase BindingBase, que realmente implementa el comportamiento XAML para Binding).

Por lo tanto, si funciona para usted, es por accidente y no es un comportamiento compatible.


PS: No es necesario utilizar MultiBinding para una sola 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}"/> 
+0

Sí, podría ser un comportamiento no esperado. La sintaxis más corta que presenté fue generada por Visual Studio 2008 cuando se pegó un elemento de WPF. Como no lo codifiqué, estaba pensando si era posible hacer esta versión más corta para varias rutas de enlace. Gracias Heinzi! –

Cuestiones relacionadas