2009-06-23 11 views
10

Comment puis-je créer un seul TextBlock pour dire "Hi, Jeremiah"?Comment ajouter correctement un préfixe (ou un suffixe) à la liaison de données dans XAML?

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

Recherche d'une solution élégante. Qu'est-ce qui est là-bas? J'essaie de ne pas écrire un convertisseur pour chaque combinaison préfixe/suffixe.

+0

On dirait que votre réponse acceptée peut être WPF seulement - vous pourriez supprimer le tag Silverlight. –

Répondre

23

Si vous n'avez qu'une seule valeur à insérer, vous pouvez utiliser la propriété StringFormat de Binding. Notez que ce requiert .NET 3.5 SP1 (ou .NET 3.0 SP2), donc utilisez-le uniquement si vous pouvez compter sur votre environnement de production ayant le dernier service pack.

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

Si vous voulez insérer deux ou plusieurs valeurs liées, je habituellement juste faire un StackPanel avec orientation = « horizontal » qui contient plusieurs TextBlocks, par exemple:

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

Assurez-vous d'avoir installé le 3.5SP1 pour l'utiliser. – rmoore

+0

Merci! Cela a fonctionné superbement! – Jeremiah

+0

@rmoore: Bonne prise. J'ai édité ma réponse pour que cela se démarque. –

0

Je pense que cela devrait fais le.

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

La solution StringFormat de Joe White est probablement la solution. J'avais oublié ça. –

1

correction (mineur) à @ Joe solution White

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

guillemets simples sont tenus d'appliquer StringFormat avec succès
a fonctionné pour moi :)

Questions connexes