WPF RichTextBox pour créer un éditeur avec des numéros de ligne [fermé]
je crée un éditeur de texte pour une langue spécifique à un domaine. Je suis en utilisant WPF RichTextBox
comme commande de base. Je ne sais pas comment inclure gracieusement la numérotation des lignes. Quelqu'un sait-il des exemples?
4 réponses
AvalonEdit est un bon un, et il est open source. Je pense qu'il a presque toutes les caractéristiques de la commande Aqistar comme la mise en évidence de la syntaxe et le pliage. Facilité de configuration et d'utilisation. Plus de détails peuvent être trouvés ici.
je créerais un contrôle composite, avec un contrôle de panneau de pile et des blocs de texte sur la gauche que vous utiliseriez pour gérer la numérotation de ligne. Si vous êtes préoccupé par le nombre de lignes et d'avoir trop d'éléments visuels, alors vous pouvez utiliser une zone de liste en mode virtuel.
vous devez vous connecter aux différents événements sur la RichTextBox pour savoir quand mettre à jour la liste, ainsi que calculer la hauteur de chaque ligne, mais cela devrait être faisable avec le FlowDocument attaché à la RichTextBox.
RichText supporte les portées" protégées " - non éditables. Vous pouvez balancer vos numéros de ligne en tant que passages de texte protégés dans le flux RTF (lorsque vous faites votre formatage).
dans les formulaires Win, vous pouvez utiliser RichTextBox.Propriété De Sélectionprotected. WPF doit avoir quelque chose de similaire.
de cette façon, toutes vos bases seront correctes et vous n'aurez pas à faire de réflexion/programmation supplémentaire pour que l'éditeur se comporte correctement. Texte modifiable sera modifiable, et les numéros de ligne ne sera pas.
le seul côté négatif est que vous devez soumettre à nouveau le flux RTF après chaque édition. Mais j'imagine que vous avez déjà fait cela pour fournir le formatage parse / diagnostic d'erreur / n'importe quoi.
pourquoi ne pas utiliser le contrôle WPF d'AqiStar? AqiStar.Zone de texte
je ne travaille pas pour eux...Je sais juste Qu'Oren utilise ce produit dans son profileur Nhobernate (NHProf) et il semble l'apprécier.