2017-07-18 4 views
0

J'ai un TextBox dans un projet WPF qui contient un motif Regex complexe comme celui-ci:WPF TextBox Wrap partout dans la chaîne

<TextBox x:Name="tbPattern" TextWrapping="Wrap" VerticalAlignment="Stretch" FontFamily="Consolas" 
    Text="^(?type>([A-Z]|[0-9])+)_(?Y>\d{4})(?M>0[1-9]|1[0-2])(?d>0[1-9]|[1-2][0-9]|3[0-1])_(?H>([0-1][0-9]|2[0-3]))(?m>([0-5][0-9]))(?s>([0-5][0-9]))(~(?n>[1-9][0-9]*))?\.(?ext>([A-Z|a-z|0-9]+))$" 
/> 

(Oui, la syntaxe regex est invalide, mais il est uniquement à des fins de test .. Parce que le motif ne devrait pas contenir beaucoup d'espaces, je voudrais envelopper le texte de la zone de texte toujours à la fin de la ligne, en ignorant les caractères d'espace avant, comme les commandes utilisées pour le faire (simplement ouvrir cmd et insérez le motif: dans chaque ligne, tous les caractères iront jusqu'à la dernière colonne).

J'ai donc testé les propriétés TextWrapping disponibles mais je n'ai pas trouvé la bonne. NoWrap produit un affichage très chaotique, tandis qu'une simple option Wrap distribue le motif sur des lignes longues non égales. Ceci est également fait par WrapWithOverflow.

Comment puis-je utiliser un algorithme d'encapsulation dans un style cmd qui ne recherche pas d'espaces à une ligne de rupture antérieure? Merci d'avance.

Répondre

1

Vous pouvez remplacer l'espace par un espace insécable.

Replace(" ", "\u00a0") 

Et vous pouvez lier la valeur remplacée via une propriété pour préserver le texte d'origine. Ou vous pouvez également utiliser un convertisseur.

+0

D'accord, mais cela ne change-t-il pas l'entrée de l'utilisateur? S'il copie le motif de la zone de texte dans un autre programme, le presse-papiers ne contiendra pas le texte d'origine, n'est-ce pas? J'ai peur que cela ne semble pas très convivial. – KnorxThieus