Подтвердить что ты не робот

Изменение цвета и шрифта для некоторой части текста в WPF С#

Есть ли способ изменить цвет и шрифт для некоторой части текста, которую я хочу разместить в TextBox или RichTextBox. Я использую С# WPF.

Например

 richTextBox.AppendText("Text1 " + word + " Text2 ");

Переменные слова, например, являются другим цветом и шрифтом из Text1 и Text2. Возможно ли и как это сделать?

4b9b3361

Ответ 1

Если вы просто хотите сделать некоторую быструю раскраску, использование конца содержимого RTB в качестве диапазона и применить форматирование к нему, возможно, самое простое решение, например.

  TextRange rangeOfText1 = new TextRange(richTextBox.Document.ContentEnd, richTextBox.Document.ContentEnd);
  rangeOfText1.Text = "Text1 ";
  rangeOfText1.ApplyPropertyValue(TextElement.ForegroundProperty, Brushes.Blue);
  rangeOfText1.ApplyPropertyValue(TextElement.FontWeightProperty, FontWeights.Bold);

  TextRange rangeOfWord = new TextRange(richTextBox.Document.ContentEnd, richTextBox.Document.ContentEnd);
  rangeOfWord.Text = "word ";
  rangeOfWord.ApplyPropertyValue(TextElement.ForegroundProperty, Brushes.Red);
  rangeOfWord.ApplyPropertyValue(TextElement.FontWeightProperty, FontWeights.Regular);

  TextRange rangeOfText2 = new TextRange(richTextBox.Document.ContentEnd, richTextBox.Document.ContentEnd);
  rangeOfText2.Text = "Text2 ";
  rangeOfText2.ApplyPropertyValue(TextElement.ForegroundProperty, Brushes.Blue);
  rangeOfText2.ApplyPropertyValue(TextElement.FontWeightProperty, FontWeights.Bold);

Если вы ищете более продвинутое решение, я предлагаю прочитать страницу MSDN о FlowDocument, так как это дает вам большую гибкость в форматирование текста.

Ответ 2

Вы можете попробовать это.

public TestWindow()
{
    InitializeComponent();

    this.paragraph = new Paragraph();
    rich1.Document = new FlowDocument(paragraph);

    var from = "user1";
    var text = "chat message goes here";
    paragraph.Inlines.Add(new Bold(new Run(from + ": "))
    {
        Foreground = Brushes.Red
    });
    paragraph.Inlines.Add(text);
    paragraph.Inlines.Add(new LineBreak());
    this.DataContext = this;
}
private Paragraph paragraph;

Поэтому используйте свойство Document RichTextBox