Как мне сослаться на мой FlowDocument - PullRequest
3 голосов
/ 12 ноября 2010

Я определил FlowDocument в управляющей библиотеке WPF (Добавить новый элемент ..., FlowDocument - это корневой элемент файла). Я предполагаю, что это будет использоваться в нескольких контекстах, таких как пользовательский элемент управления или окно, ссылки в коде для привязки данных и экспорта в xps и т. Д. Но я не могу понять, как получить ссылку на экземпляр этот документ. Кажется, он не создает объект в скомпилированной сборке.

Точнее, это моя проблема

<MyUserControl ........ >
  <FlowDocumentScrollViewer>
    <!-- doesn't work --><namespaceRef:MyFlowDocument /> 
  <FlowDocumentScrollViewer>
</MyUserControl>

1 Ответ

2 голосов
/ 12 ноября 2010

Возможно, самое простое решение - поместить ваш FlowDocument в словарь ресурсов, а затем использовать ключ x: *

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <FlowDocument x:Key="myFlowDocument" ..>
    </FlowDocument>
</ResourceDictionary>

<FlowDocumentScrollViewer Name="flowDocumentScrollViewer">
    <StaticResource ResourceKey="myFlowDocument"/>
</FlowDocumentScrollViewer>

В противном случае вам придется установить FlowDocument для создания действия Embedded Resource и lode.это в коде с чем-то вроде этого

Stream flowDocumentStream = Assembly.GetExecutingAssembly().GetManifestResourceStream("DocumentNameSpace.FlowDocumentName.xaml");
FlowDocument flowDocument = (FlowDocument)XamlReader.Load(flowDocumentStream);
flowDocumentScrollViewer.Document = flowDocument;

Обновление
Я думаю, что было бы возможно использовать ObjectDataProvider для загрузки FlowDocument, если вы хотите посмотреть на него.В любом случае ResourceDictionary кажется легким выходом.

...