2015-10-23 4 views

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

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. –

+0

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 ? –

+0

Je faisais une erreur. Maintenant j'ai compris. Merci ! –

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? –