我试图将我的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”。
答案 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管理缺乏简单性,而且往往很麻烦)