web-dev-qa-db-fra.com

Avoir du texte codé en dur avec une liaison dans un TextBlock

Dans WPF, existe-t-il un moyen d'avoir la propriété Text d'un TextBlock pour contenir à la fois du texte codé en dur et une liaison spécifique?

Ce que j'ai à l'esprit est quelque chose du genre de ce qui suit (bien sûr, ce qui suit ne compile pas):

<TextBlock Text="Number of Fans: {Binding Artist.Fans.Count}"></TextBlock>
49
Andreas Grech

Il y a, si vous êtes sur .Net 3.5 SP1

<TextBlock Text="{Binding Path=Artist.Fans.Count, 
                 StringFormat='Number of Fans: {0}'}" />
87
Scott Weinstein

En utilisant l'approche ci-dessus:

<TextBlock Text="{Binding Path="Artist.Fans.Count", 
                  StringFormat='Number of Fans: {0}'}" />

Je l'ai trouvé quelque peu restrictif en ce sens que je ne pouvais pas trouver un moyen de mettre un visage en gras dans le StringFormat ni d'utiliser une apostrophe dans le StringFormat.

Au lieu de cela, je suis allé avec cette approche, qui a mieux fonctionné pour moi:

<TextBlock TextWrapping="Wrap">
    <Run>The value</Run>
    <Run Text="{Binding Path=MyProperty1, Mode=OneWay}" FontWeight="Bold" />
    <Run>was invalid. Please enter it with the format... </Run>
    <LineBreak/><LineBreak/>
    <Run>Here is another value in the program</Run>
    <Run Text="{Binding Path=MyProperty2, Mode=OneWay}" FontWeight="Bold" />
</TextBlock>                    
34
doogie

Utilisation Binding.StringFormat :

<TextBlock Text="{Binding Artist.Fans.Count, StringFormat='Number of Fans: {0}'}"/>
4
Danko Durbić

Ici, la valeur de liaison (clouds.all) est ajoutée avec "%". Vous pouvez ajouter n'importe quelle valeur souhaitée après "\ {0 \}".

 <TextBlock Text="{Binding Path=clouds.all, StringFormat=\{0\}%}"/>
2
reza.cse08