Привязать FlowDocument к моему FlowDocumentScrollViewer

Я немного новичок в WPF/XAML, поэтому это, вероятно, очень очевидный вопрос.

Я добавил в свой проект новый элемент типа FlowDocument. Назовем его CrappyFlowDocument.xaml:

<FlowDocument xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
              ColumnWidth="400" FontSize="14" FontFamily="Georgia">
    <Paragraph>
        Woo, my first paragraph!
    </Paragraph>
</FlowDocument>

Я поместил его в отдельный файл, потому что не хочу помещать большие куски текста в середину моего PrettyInfoWindow.

Теперь, в моем PrettyInfoWindow, я в тупике.

<FlowDocumentScrollViewer x:Name="flowDocViewer" Margin="0,0,0,0" Background="#FF414141" Zoom="80" VerticalScrollBarVisibility="Disabled" HorizontalScrollBarVisibility="Disabled" IsSelectionEnabled="False">
     <!-- What do I put here-abouts to get my CrappyFlowDocument.xaml to show? -->
</FlowDocumentScrollViewer>

Я не могу найти ничего в сети о такой функциональности «включить», но, вероятно, мой поиск ужасен. Если это не предназначение файла FlowDocument.xaml, то что?


person Stigma    schedule 14.12.2010    source источник


Ответы (1)


вот как бы я это сделал:

во-первых, сделайте ваш CrappyFlowDocument ресурсом, добавив к нему ключ и поместив его в словарь ресурсов:

в App.xaml:

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="CrappyFlowDocument.xaml" />
    </ResourceDictionary>
</Application.Resources>

в вашем файле CrappyFlowDocument.xaml:

<ResourceDictionary>
    <FlowDocument x:Key="MyCrappyFlowDoc"
                  ColumnWidth="400"
                  FontSize="14"
                  FontFamily="Georgia">
        <Paragraph>
            Woo, my first paragraph!
        </Paragraph>
    </FlowDocument>
</ResourceDictionary>

затем вызовите его напрямую как свойство "Document" FlowDocumentScrollViewer:

<FlowDocumentScrollViewer Margin="0,0,0,0"
                          Background="#FF414141"
                          Zoom="80"
                          VerticalScrollBarVisibility="Disabled"
                          HorizontalScrollBarVisibility="Disabled"
                          IsSelectionEnabled="False"
                          Document="{StaticResource MyCrappyFlowDoc}" />

Я не знаю более простого способа сделать это, надеюсь, это удовлетворит ваши потребности.

person David    schedule 15.12.2010
comment
Я видел решение для словаря ресурсов в другом месте, но не смог заставить его работать с потоковым документом отдельно, когда пытался. Попадет ли словарь ресурсов в Window.Resources, или я что-то делал не так? - person Stigma; 15.12.2010
comment
лучшее, что вы можете сделать, это поместить его в ресурсы вашего приложения. Я отредактировал, чтобы вы могли видеть, что я имею в виду - person David; 15.12.2010
comment
Я пропустил ваш ответ (мне все еще интересно, почему SO перестал присылать мне уведомления во время просмотра), но, к счастью, я вижу его сейчас. Я попытаюсь реализовать его, когда снова настрою эти потоковые документы — пока я решил жестко закодировать их в своей Windows. :-( Итак, просто из любопытства... какой смысл в типе 'New-›Flow Document', который предлагает Visual Studio? Из всего, что я видел до сих пор, он кажется бесполезным. - person Stigma; 19.12.2010
comment
есть много применений для этого нового класса, это новый способ работы с форматированным документом непосредственно в wpf, без необходимости иметь дело с временным файлом, написанным в .rtf или любом другом формате RichText, а затем показывать его в различных элементах управления (richtext, флоудокридер и т. д.). Хотя нужно привыкнуть... - person David; 20.12.2010