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>
Il y a, si vous êtes sur .Net 3.5 SP1
<TextBlock Text="{Binding Path=Artist.Fans.Count,
StringFormat='Number of Fans: {0}'}" />
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>
Utilisation Binding.StringFormat
:
<TextBlock Text="{Binding Artist.Fans.Count, StringFormat='Number of Fans: {0}'}"/>
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\}%}"/>