2009-06-23 8 views
10

¿Cómo puedo unir un solo TextBlock para decir "Hola, Jeremiah"?¿Cómo agrego correctamente un prefijo (o sufijo) a enlace de datos en XAML?

<TextBlock Text="Hi, {Binding Name, Mode=OneWay}"/> 

Buscando una solución elegante. ¿Qué hay afuera? Estoy tratando de evitar escribir un convertidor para cada combinación de prefijo/sufijo.

+0

Parece que la respuesta puede ser aceptado WPF solo - puede eliminar la etiqueta de Silverlight. –

Respuesta

23

Si solo tiene un valor único que necesita insertar, puede usar la propiedad StringFormat de Binding. Tenga en cuenta que este requiere .NET 3.5 SP1 (o .NET 3.0 SP2), así que solo úselo si puede contar con su entorno de producción con el último service pack.

<TextBlock Text="{Binding Name, Mode=OneWay, StringFormat='Hi, {0}'}"/> 

Si se desea introducir dos o más diferentes valores consolidados, por lo general sólo hacer un StackPanel con Orientación = "horizontal" que contiene varios TextBlocks, por ejemplo:

<StackPanel Orientation="Horizontal"> 
    <TextBlock Text="Good "/> 
    <TextBlock Text="{Binding TimeOfDay}"/> 
    <TextBlock Text=", "/> 
    <TextBlock Text="{Binding Name}"/> 
    <TextBlock Text="!"/> 
</StackPanel> 
+1

Asegúrese de tener 3.5SP1 instalado para usar esto. – rmoore

+0

¡Gracias! ¡Funcionó magníficamente! – Jeremiah

+0

@rmoore: Buena captura. He editado mi respuesta para que se destaque. –

0

creo que esto debería hazlo.

<TextBlock> 
    <TextBlock Text="Hi, " /> 
    <TextBlock Text="{Binding Name, Mode=OneWay}" /> 
</TextBlock> 
+2

La solución StringFormat de Joe White es probablemente el camino a seguir. Me había olvidado de eso. –

1

corrección (menor) a @ Joe solución de White se requieren

<TextBlock Text="{Binding Name, Mode OneWay, StringFormat='Hi {0}}'"/> 

comillas simples para aplicar con éxito StringFormat
trabajó para mí :)

Cuestiones relacionadas