2010-03-22 8 views
3

Je dois appliquer le formatage de paragraphe à une sélection dans une zone de texte enrichi. Mon RTB se comportera de la même manière que les zones de texte riches sur StackOverflow - l'utilisateur peut taper du texte dans le RTB, mais il peut également entrer des blocs de code. Le RTB appliquera un formatage très simple au bloc de code - il changera la police et appliquera une couleur d'arrière-plan au bloc entier, similaire à ce que vous voyez dans le bloc de code ci-dessous.Mise en forme de paragraphe dans un RichTextBox WPF?

Modification de la police est assez simple:

var textRange = new TextRange(rtb.Selection.Start, rtb.Selection.End); 
textRange.ApplyPropertyValue(TextElement.FontFamilyProperty, "Consolas"); 
textRange.ApplyPropertyValue(TextElement.FontSizeProperty, 10D); 

Maintenant je dois appliquer une mise en forme au niveau du paragraphe. J'ai besoin de mettre la marge de paragraphe à 0, ainsi je n'obtiens pas une ligne vide entre les lignes de code, et je dois placer la couleur de fond de paragraphe. Voici mon problème: je ne peux pas comprendre comment obtenir les éléments de paragraphe de la sélection, de sorte que je puisse appliquer la mise en forme.

Des suggestions? Un exemple d'application des propriétés Marge et Arrière-plan serait extrêmement utile. Merci!

Répondre

3

Oh, qui était facile .. Nous sommes tombés sur la réponse avec un peu plus de recherche:

var textRange = new TextRange(TextBox.Selection.Start, TextBox.Selection.End); 
textRange.ApplyPropertyValue(TextElement.FontFamilyProperty, "Consolas"); 
textRange.ApplyPropertyValue(TextElement.FontSizeProperty, 10D); 
textRange.ApplyPropertyValue(Paragraph.MarginProperty, new Thickness(0)); 
textRange.ApplyPropertyValue(Paragraph.BackgroundProperty, "LightSteelBlue"); 

La seule limite est que la mise en évidence s'étend encore plus loin que le texte, plutôt que sur le côté droit du contrôle. Je vais laisser cette question ouverte pendant quelques jours. Si quelqu'un peut me dire comment étendre l'arrière-plan au bord droit du contrôle, j'accepterai votre réponse à cette question.

+0

J'ai essayé de définir la propriété Background des objets Block et Section de sélection selon ce qui précède. Même résultat que la définition de l'arrière-plan du paragraphe –

+0

Avez-vous trouvé une solution pour appliquer l'arrière-plan à l'ensemble de la ligne? J'ai aussi besoin de cette fonctionnalité. – Alireza