2010-11-12 5 views
1

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

Более конкретно, это моя проблема

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

ответ

2

Самым простым решением является, вероятно, положить FlowDocument в Словаре ресурсов, а затем использовать х: Key, как этот

<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 и закодировать его в коде с чем-то вроде этого

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

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

+0

Я думаю, это разумно ... но в этом случае, какова цель шаблона «FlowDocument» в диалоговом окне «Добавить новый элемент»? Это только для встроенных ресурсов? – Clyde

+0

Да, мне интересно то же самое. Возможно, есть способ сделать это, но я никогда его не видел. Может быть, кто-то даст вам лучший ответ в ближайшее время :) –

+0

Вот некоторые ссылки на похожие вопросы. http://www.netframeworkdev.com/windows-presentation-foundation-wpf/loading-a-flowdocument-into-a-richtextbox-in-xaml-87774.shtml http://stackoverflow.com/questions/897505/получение-а-FlowDocument-с-а-XAML-шаблона-файла –

Смежные вопросы