3

WPFWebサービスに動的に構築されたWPFRichTextBoxがあります。このWebサービスは、サードパーティのSilverlightRichTextBoxコントロールのコンテンツから抽出されたxaml文字列を受け入れます。

<Paragraph TextAlignment=\"Left\"><Run FontFamily=\"Comic Sans MS\" FontSize=\"16\" Foreground=\"#FF0000FF\" FontWeight=\"Bold\" >This text is blue and bold.</Run></Paragraph>

このxamlをWPFRichTextBoxに挿入するにはどうすればよいですか?FlowDocumentとParagraphandRunの概念をある程度理解しているので、以下のコードを使用してWPFRichTextBoxにテキストを入力できます。

        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を解析する方法をコントロールに知らせる方法はありますか?

4

1 に答える 1

7

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

于 2009-01-21T13:41:07.370 に答える