Check out AvalonEdit from SharpDevelop project. It has declarative formatting with 'out-of-the-box' support for many languages. And it can control any formatting by code as well.
https://github.com/icsharpcode/SharpDevelop/wiki/AvalonEdit
http://www.codeproject.com/Articles/42490/Using-AvalonEdit-WPF-Text-Editor
And it's even available in NuGet https://www.nuget.org/packages/AvalonEdit