2009-08-12 7 views
4

Cela devrait avoir une solution simple, mais je n'arrive pas à le trouver.Mise en forme de chaîne wpf PAS de chiffres ou de dates

Je veux faire quelque chose comme ceci, où j'ai une liaison de données avec un format de chaîne. Le champ est un champ de texte, et je voudrais l'afficher avec un suffixe (mais ne change pas les données sous-jacentes). Donc je veux que la valeur de obj.field, par exemple "value", soit affichée comme "suffixe de valeur".

Est-il vraiment nécessaire d'utiliser un ValueConverter (ou autre) pour faire cela? Je pense que si c'est possible avec la construction StringFormat, alors il y a une option de format magique que je n'ai pas rencontrée. Cela conduit à une question connexe: où puis-je trouver une référence pour WPF StringFormat? Je peux trouver la référence pour les options de mise en forme C# String.Format, mais celles-ci ne semblent pas toutes fonctionner dans WPF (comme ce que j'ai essayé ci-dessus).

+0

Toutes les réponses à la question connexe? – Klay

+0

Je dois avoir accidentellement enlevé mon commentaire sur la question connexe lorsque j'ai réécrit ma réponse. Je viens de mettre à jour. –

Répondre

7

StringFormat fonctionnera si le type de cible est string. Toutefois, le type de la propriété Content de Label est objet. C'est pourquoi le StringFormat n'a aucun effet. Si vous mettez un TextBlock à l'intérieur du Label (ou utilisez uniquement un TextBlock) et liez la propriété Text de Textblock, cela devrait fonctionner correctement.

<Label> 
    <TextBlock Text="{Binding obj.field, StringFormat=\{0\} suffix}" /> 
</Label> 

Si vous avez d'autres raisons de vouloir lier la valeur à la Label, vous pouvez aussi faire ce qui suit.

<Label DataContext="{Binding obj.field}"> 
    <TextBlock Text="{Binding ., StringFormat=\{0\} suffix}" /> 
</Label> 

question connexe: Je ne peux pas penser à une raison pour laquelle les chaînes de format normal que vous pouvez fournir à string.Format() ne fonctionneraient pas. Ils devraient tous, à la fois la chaîne standard et personnalisée. Here est une page avec plusieurs exemples. S'il y en a que vous trouvez ne fonctionnent pas, veuillez fournir des exemples.

+1

Merci. J'ai pris conscience que les étiquettes ne sont pas "lites" TextBlocks, comme je l'imaginais, mais un autre animal entièrement. Merci pour la réponse. – Klay

Questions connexes