C# WPF RichTextBox

Date: 2019-10-24
private void AppendText(RichTextBox box, string text, LogLevel level)
{
	Color color = Color.FromRgb(0, 0, 0);
	switch (level)
	{
		case LogLevel.Debug: color = Color.FromRgb(200, 200, 200); break;
		case LogLevel.Info: color = Color.FromRgb(100, 100, 200); break;
		case LogLevel.Warning: color = Color.FromRgb(200, 200, 0); break;
		case LogLevel.Error: color = Color.FromRgb(200, 0, 0); break;
	}

	BrushConverter bc = new BrushConverter();
	Paragraph paragraph = new Paragraph();
	paragraph.Foreground = (Brush)bc.ConvertFromString(HexConverter(color));
	paragraph.Inlines.Add(text);
	box.Document.Blocks.Add(paragraph);
	// Slower, but also works:
	//TextRange tr = new TextRange(box.Document.ContentEnd, box.Document.ContentEnd);
	//tr.Text = text + "\r\n";
	//try
	//{
	//    tr.ApplyPropertyValue(TextElement.ForegroundProperty, bc.ConvertFromString(HexConverter(color)));
	//}
	//catch (FormatException) { }
	box.ScrollToEnd();
}
private void ClearText(RichTextBox box) {
	box.Document.Blocks.Clear();
}

27030cookie-checkC# WPF RichTextBox