Je cherche quelque chose dans ces lignes: ceci affiche bien sûr effectivement le texte "{nom d'utilisateur de la liaison}" à l'utilisateur plutôt que de décoder, mais je vous connais peut faire quelque chose comme celui-ci avec asp.net, alors j'espère qu'il y a un moyen de faire fonctionner cela dans WPF. P> Je suis déjà conscient que je pourrais utiliser un EDIT: strong> p> basé sur la solution la plus excellente de @matt Hamilton , J'ai essayé de pousser l'enveloppe et de lier deux valeurs dans le même ceci produit: J'ai également trouvé ce lien utile pour déterminer quels formats à placer après le côlon: p> http://msdn.microsoft.com/en-us/library/fbxft59x.aspx P> < / p> ivenueconverter code > ... Je cherche quelque chose que je peux faire purement en balise si possible. P>
textblock code> à l'aide d'un
multibindage code>. Fonctionne comme un charme: p>
tentatives: 1 de 4 code> (supposant
tentative = 1 code> et
et
TentativeCount = 4 code>). P>
5 Réponses :
Jusqu'à présent, je ne connais pas une solution qui rend cela possible exactement de la même manière que vous le décrivez. Cependant, vous pouvez, en tant que solution de contournement, utilisez plusieurs blocs de texte pour étudier votre phrase: C'est ce que j'ai utilisé jusqu'à présent et, tandis que c'est encombrant à taper, il semble être la solution la plus facile. Mais dès que vous avez besoin d'internationaliser, c'est un non-aller pour des raisons évidentes. P> P>
J'ai utilisé un stackpanel code> pour chaîner ensemble des paires d'attributs d'attributs avant (par exemple, "Statut: réussi"), mais j'étais un peu méfiant pour l'utiliser pour ficeler différentes parties d'une phrase parce que je pensé que l'espacement du texte naturel peut ne pas être préservé (c'est-à-dire que vous auriez des pauses plus importantes entre
textblocks code> qu'entre les mots du même
textblock code>. Si cela s'avère PAS être un problème, cependant, c'est une bonne solution.
Jusqu'à présent, j'ai remarqué aucun espace supplémentaire. Mais la crénage ne fonctionnera probablement pas de manière automatique, de même que les ligatures automatiques, etc. Essentiellement, vous brisez le texte en différentes pistes et je doute que la typographie avancée fonctionne à travers celles-ci. Mais pour certains projets, la partie I18N est assez grave et j'évite de concaténer des cordes et des variables ou d'utiliser des chaînes de format non positionnelles dans la mesure du possible. Parfois, une solution rapide et sale comme celle-ci survit, cependant :-)
Vous pouvez utiliser la propriété de liaison StringFormat dans .NET 3.5 SP1:
<TextBlock> <TextBlock.Text> <MultiBinding StringFormat="Welcome, {0} {1}!"> <Binding Path="FirstName" /> <Binding Path="LastName" /> </MultiBinding> </TextBlock.Text> </TextBlock>
Wee, c'est gentil. La commande est bizarre, cependant, comme c'est exactement le contraire avec le format habituel [String] :: Format.
Beau! Cela me conduit à une autre question, bien que: est-il possible d'avoir plusieurs valeurs liées ou êtes-vous limité à un? Merci.
D'Oh - Vous avez fait ça pendant que je mettais ma réponse! Tant pis! :)
@Johannes Vous pouvez le commander de la même manière que String.Format si vous aimez: Text = "{Binding StringFormat =" ... ", chemin = nom d'utilisateur"
@Matt: haha, eh bien je suppose que cela n'a pas mal d'avoir deux exemples. Il y a des règles étranges avec l'échappement des accolades que je n'ai pas encore eu une poignée. Avis dans mon exemple, j'ai utilisé {} code> au début du
stringformat code>. Dans votre exemple original, vous avez utilisé
\ { code> et
\} code>. Et puis vous n'avez pas besoin de vous échapper du tout pour votre deuxième exemple. En outre, il a rejeté mes liaisons entier jusqu'à ce que j'ai ajouté
: g code> ("général"). Ces étranges de côté,
stringformat code> a un nouveau ventilateur.
Regardez cette bibliothèque "WPFIX". Il permet à l'utilisateur d'écrire des expressions Lambda dans le XAML. Je ne l'ai pas utilisé dans le code de production, uniquement en code de démonstration. J'ai pu prendre la largeur d'une forme, la diviser par deux et lier la valeur à un contrôle. Ordinairement, vous auriez besoin de créer une classe de convertisseur, comme vous le décrivez. Cette bibliothèque peut être la chose que vous recherchez: p>
Ceci est le moyen le plus simple de mélanger du texte et des commandes Vous pouvez en ligne des boutons de style ou d'autres commandes à. p> p>
La meilleure façon de le faire consiste à utiliser les exécutions ...