Set RTF text into WPF RichTextBox control Set RTF text into WPF RichTextBox control wpf wpf

Set RTF text into WPF RichTextBox control


Do you really have to start with a string?

One method to load RTF is this:

rtfBox.Selection.Load(myStream, DataFormats.Rtf);

You probably should call SelectAll() before that if you want to replace existing text.

So, worst case, you'll have to write your string to a MemoryStream and then feed that stream to the Load() method. Don't forget to Position=0 in between.

But I'm waiting to see somebody to come up with something more elegant.


Create an Extension method

    public static void SetRtf(this RichTextBox rtb, string document)    {        var documentBytes = Encoding.UTF8.GetBytes(document);        using (var reader = new MemoryStream(documentBytes))        {            reader.Position = 0;            rtb.SelectAll();            rtb.Selection.Load(reader, DataFormats.Rtf);        }    }

Then you can do WinForm-esque style

richTextBox1.SetRtf(rtf);


string rtf = @"{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fnil\fcharset0 Arial;}} {\colortbl ;\red0\green0\blue0;\red255\green0\blue0;} \viewkind4\uc1\pard\qc\cf1\fs16 test \b bold \cf2\b0\i italic\cf0\i0\fs17  \par } ";richTextBox1.Rtf = rtf;

It's working fine