2013-05-26 3 views
3

Я хочу иметь функциональный эквивалент текстового блока, который поддерживает несколько цветов.Цветной текстовый блок, который будет заполняться программно

Я попытался создать UserControl и добавить несколько текстовых блоков и установить их передний план на нужные мне цвета, однако это очень медленно, так как я буду менять и очищать текст каждые несколько секунд.

Я также пробовал использовать RichTextBox, но похоже, что он не был предназначен для заполнения программным способом.

Предложения?

ответ

7

TextBlock может отображать несколько «прогонов» - блоки текста с одинаковым форматированием. Используйте Inlines, чтобы получить к ним доступ:

using System.Windows.Documents; 
using System.Windows.Media; 

var inlines = textBlock.Inlines; 
inlines.Add(new Run("This is red") { Foreground = Brushes.Red }); 
inlines.Add(new LineBreak()); // in case if you want new line 
inlines.Add(new Run("And this is blue") { Foreground = Brushes.Blue }); 
+0

Я люблю тебя. (Сначала это не работало для меня, но я случайно удалил InitializeComponent() в конструкторе.) – Entity