J'essaie d'utiliser le WrapPanel et deux TextBlocks pour ajouter un astérisque (*) sur le côté gauche d'un texte, permettre au texte d'envelopper et forcer le texte à être aligné à droite. Je l'ai fait avec succès en créant un WrapPanel avec le FlowDirection défini à RightToLeft et en ajoutant mon texte, suivi de l'astérisque. Cependant, si le texte que j'utilise contient des caractères non alphanumériques à la fin de la ligne, il est inexplicablement forcé à l'avant de la ligne. Je trouve ce comportement très étrange. Je pense que ce doit être un bug dans WPF et pas un comportement prévu.Utilisation du WrapPanel WPF pour boucler et aligner correctement le texte - Bug WPF?
Exemple avec Text = Texte normal (Autre texte):
Expected:
* Normal Text (Other
Text)
Actual:
* Normal Text (Other
(Text
Ne hésitez pas à utiliser le code exemple suivant pour recréer le problème par vous-même. Placez simplement ceci dans une fenêtre avec Height et Width = 100, puis tapez "Normal Text (Other Text)" dans le TextBox. Ou, définissez la Hauteur et la Largeur sur ce que vous voulez et écrivez suffisamment de texte pour qu'il soit forcé d'envelopper le texte, puis ajoutez la ponctuation à la fin.
Exemple de code:
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<TextBox Name="input" />
<WrapPanel Grid.Row="2" FlowDirection="RightToLeft">
<TextBlock Text="{Binding ElementName=input, Path=Text}" TextWrapping="Wrap"/>
<TextBlock Text="*" Margin="0,0,3,0"/>
</WrapPanel>
</Grid>
Alors, ma question (s).
- Est-ce un bug, ou est-ce prévu?
- Si c'est un bogue, devrais-je le soumettre à Microsoft d'une manière ou d'une autre? Comment?
Depuis que j'ai commencé ce post, j'ai décidé de placer les deux TextBlocks dans une grille à deux colonnes. Avec le non-astérisque contenant TextBlock configuré pour utiliser un Right TextAlignment je réponds à toutes mes exigences de toute façon. Pourtant, j'ai trouvé que c'était un problème intéressant.
Fonctionne bien! Comme c'est souvent le cas avec une logique alambiquée comme mon RightToLeft FlowDirection, il y a une façon beaucoup plus simple de le faire. Je l'aime mieux que la grille que j'ai décrite. Est-ce que cela vaut la peine de signaler le comportement étrange à Microsoft? – Drew
@Drew On dirait que c'est le comportement attendu. Comme je le dis, je ne sais rien à ce sujet, mais un peu Google a trouvé ce lien: http://www.i18nguy.com/markup/right-to-left.html –
Je ne peux pas dire que je vraiment comprendre les règles pour changer une langue de gauche à droite à droite à gauche, mais je suis vendu que c'était un comportement intentionnel. Bien joué. – Drew