2 votes

Remplissage d'un affichage numérique dans WPF

J'ai un affichage de la position qui est très simple - c'est juste un TextBlock auquel on applique un Style. Dans ce style, je le définis comme suit (il existe d'autres propriétés, mais je les ai supprimées par souci de concision) :

    <Style x:Key="NumberStyle" TargetType="{x:Type TextBlock}">
        <Setter Property="TextAlignment" Value="Center" />
    </Style>

J'ai un écran qui utilise ce style et qui affiche un nombre de 0,0 à 30000,0. Le problème est que, comme je centre le texte, le nombre (s'il change rapidement) saute partout et c'est un peu dérangeant. J'aimerais formater ma chaîne de manière à ce qu'elle ne fasse pas cela.

J'ai essayé ce ConverterParameter dans XAML :

ConverterParameter='\{0:00000.0\}'

et bien qu'il fasse le rembourrage correctement, j'obtiens des chiffres comme 00032.5. J'ai alors remplacé le 0 con # mais cela finit par se comporter exactement comme {0:0.0} . J'ai regardé le Documents MSDN et je n'ai rien vu d'autre qui pourrait aider.

La seule chose à laquelle je peux penser est que je devrais écrire un nouveau IValueConverter pour faire cela. En d'autres termes, dans la méthode Convert(), il faudrait prendre parameter et l'analyser pour trouver mon propre caractère spécial. Et ensuite, quand je le détecte, je remplace les chiffres manquants par des espaces.

Cependant, ce que j'essaie vraiment d'apprendre ici, c'est que cela peut être fait en utilisant simplement un caractère différent dans la chaîne de format que je ne connais pas ?

3voto

Andrei Pana Points 2879

Je pense que vous avez besoin de quelque chose comme {0,7} (affichage de l'argument sur sept positions, remplissage à gauche avec des espaces). Cependant, même dans ce cas, pour que le texte ne saute pas, vous devez utiliser une police à espacement unique, ou au moins une police dont la largeur du caractère d'espacement est égale à la largeur des chiffres.

2voto

codekaizen Points 14819

Essayez {}{0,10:#,0} pour un champ de 10 caractères.

Notez cependant que cela donnera des résultats étranges si la police n'est pas à largeur fixe. Je l'ai essayé dans Kaxaml et cela fonctionne, mais le texte n'est pas aligné avec une police proportionnelle.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X