Je souhaite mettre en évidence certaines lignes dans un bloc de texte. Ces lignes sont décidées dynamiquement. Comment fait-on ça? Par exemple, je veux mettre en évidence toutes les lignes contenant des balises de fichiers, comment puis-je le faire?WPF Inline Modification dans un bloc de texte basé sur des numéros de ligne
0
A
Répondre
1
Quelque chose comme ce qui suit devrait travailler pour vous:
foreach(System.Windows.Documents.Run run in textBlock.Inlines.OfType<System.Windows.Documents.Run>())
{
if (run.Text.Contains("<files ") || run.Text.Contains("</files>"))
{
run.Background = Brushes.Yellow;
}
}
Vous pouvez pouvez également utiliser des expressions régulières pour faire la mise en correspondance au lieu du texte compare si vous avez besoin de plus de flexibilité.
0
Vous pouvez utiliser en ligne pour faire Textblock met en évidence, par exemple
TextBlock tb = new TextBlock();
tb.TextWrapping = TextWrapping.Wrap;
tb.Margin = new Thickness(10);
tb.Inlines.Add("<xml...> ");
tb.Inlines.Add(new Run("<Configuration ")
{
FontWeight = FontWeights.Bold,
Foreground = Brushes.Blue });
tb.Inlines.Add(new Run(new LineBreak())....
+0
Comment puis-je mettre en surbrillance dynamiquement des numéros de ligne spécifiques? –
J'ai ajouté du texte dans le bloc de texte par texte annexant. Par conséquent, l'analyse couvre tout le texte dans le bloc de texte, ainsi cette boucle ne s'exécute qu'une seule fois. Cependant, je veux que la surbrillance ait lieu en fonction de la ligne. –
Votre exemple avait chaque balise XML sur chaque ligne. Êtes-vous en train de dire maintenant que tout le texte sera maintenant sur une seule ligne et que vous voulez mettre en évidence seulement les potions de la seule ligne qui sont la balise? –
Je faisais une erreur. Maintenant j'ai compris. Merci ! –