У меня есть WPF RichTextBox, который динамически встроен в веб-службу WPF. Эта веб-служба принимает строку xaml, извлеченную из содержимого стороннего элемента управления RichTextBox Silverlight.
<Paragraph TextAlignment=\"Left\"><Run FontFamily=\"Comic Sans MS\" FontSize=\"16\" Foreground=\"#FF0000FF\" FontWeight=\"Bold\" >This text is blue and bold.</Run></Paragraph>
Как мне вставить этот xaml в мой WPF RichTextBox? Я в некоторой степени понимаю концепции FlowDocument и Paragraph и Run, поэтому я могу заполнить WPF RichTextBox текстом, используя приведенный ниже код.
FlowDocument flowDocument = new FlowDocument();
Paragraph par = new Paragraph();
par.FontSize = 16;
par.FontWeight = FontWeights.Bold;
par.Inlines.Add(new Run("Paragraph text"));
flowDocument.Blocks.Add(par);
rtb.Document = flowDocument;
Но я действительно не хочу, чтобы мне приходилось самому разбирать xaml, чтобы построить абзац, поскольку это может быть очень сложным. Есть ли способ, чтобы элемент управления знал, как анализировать переданный в xaml?





Вы можете использовать XamlReader для чтения вашей строки Xaml и преобразования ее в элемент управления:
string templateString = "<Paragraph xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" TextAlignment=\"Left\"><Run FontFamily=\"Comic Sans MS\" FontSize=\"16\" Foreground=\"#FF0000FF\" FontWeight=\"Bold\" >This text is blue and bold.</Run></Paragraph>";
StringReader stringReader = new StringReader(templateString);
XmlReader xmlReader = XmlReader.Create(stringReader);
Paragraph template = (Paragraph)XamlReader.Load(xmlReader);
Просто убедитесь, что вы включили в свой шаблон следующий тег:
xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation"
HTH