FlowDocument源自外部资源

时间:2011-03-10 13:09:02

标签: wpf binding flowdocument

我试图将我的WPF应用程序中的一些措辞外部化,但是我希望能够使用某种程度的格式化。

我最初的想法是使用表示FlowDocument或Paragraph的字符串资源,例如:

<FlowDocument>
  <Paragraph FontSize="16" Foreground="Blue">Some display text under content management</Paragraph>
</FlowDocument>

在UI中,我一直尝试使用IValueConverter绑定它:

<ContentControl Content="{Binding Path=CMSText,Source={StaticResource Resources},Converter={StaticResource flowDocConverter}"/>

在转换器中:

StringReader sr = new StringReader(value.ToString());
XamlReader xamlReader = XamlReader.Create(sr);
return (FlowDocument)xamlReader.Parse();

但它一直在return语句上抛出异常。

甚至可以通过绑定来做到这一点吗?

我在XamlReader中哪里出错?

修改

XamlParseException
'无法创建未知类型'FlowDocument'。'行号“1”和行位置“2”。

2 个答案:

答案 0 :(得分:2)

更改输入字符串FlowDocument Tag,添加NamePpace,如下所示:

<FlowDocument xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:local="clr-namespace:MARS">
  <Paragraph FontSize="16" Foreground="Blue">Some display text under content management</Paragraph>
</FlowDocument>

答案 1 :(得分:1)

我说你根本无法将xamlReader.Parse()的结果转换为FlowDocument(我不知道为什么)。

你应该尝试这样的东西作为你的转换器:

FlowDocument myFlowDoc = new FlowDocument();
myFlowDoc.Blocks.Add(new Paragraph(new Run(value)))

return myFlowDoc;

(我发现FlowDocument管理缺乏简单性,而且往往很麻烦)

相关问题