FlowDocument получен из внешнего ресурса - PullRequest
3 голосов
/ 10 марта 2011

Я пытаюсь вывести некоторые формулировки из моего приложения WPF, однако я хотел бы также иметь возможность использовать некоторую степень форматирования.

Сначала я хотел использовать строковый ресурс, который представлялFlowDocument или абзац, например:

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

В пользовательском интерфейсе я пытался связать это с помощью 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();

но он продолжает выдавать исключение в операторе возврата.

Возможно ли это сделать даже через привязку?

А где я ошибаюсь в XamlReader?

EDIT

XamlParseException
'Невозможно создать неизвестный тип' FlowDocument '.'Номер строки '1' и позиция строки '2'.

Ответы [ 2 ]

2 голосов
/ 03 октября 2011

Измените входную строку тега FlowDocument, добавив пространство имен следующим образом:

<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 голос
/ 10 марта 2011

Я бы сказал, что вы просто не можете преобразовать результат xamlReader.Parse() в FlowDocument (я не уверен, почему).

Вы должны попробовать что-то вроде этого в качестве конвертера:

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

return myFlowDoc;

(я считаю, что управлению FlowDocument не хватает простоты и, как правило, возникают проблемы)

...