【问题标题】:Bind FlowDocument to my FlowDocumentScrollViewer将 FlowDocument 绑定到我的 FlowDocumentScrollViewer
【发布时间】:2010-12-14 10:46:26
【问题描述】:

我有点 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 文件的预期用途,那是什么?

【问题讨论】:

    标签: c# wpf data-binding flowdocument flowdocumentscrollviewer


    【解决方案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>
    

    然后,直接调用它作为 FlowDocumentScrollViewer 的“文档”属性:

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

    我不知道有什么更简单的方法可以做到这一点,希望这能满足您的需求

    【讨论】:

    • 我在其他地方看到了资源字典解决方案,但是当我尝试时,我无法让它在自己的位置使用流文档。资源字典会进入 Window.Resources,还是我做错了什么?
    • 你能做的最好的就是把它放在你的应用程序资源中。我进行了编辑,以便您可以了解我的意思
    • 我错过了你的回复(我仍然想知道为什么 SO 在浏览时停止给我通知)但幸运的是我现在看到了。当我再次调整这些流文档时,我会尝试实现它——现在我决定在我的 Windows 中对它们进行硬编码。 :-( 所以,只是出于好奇……Vis​​ual Studio 提供的“New->Flow Document”类型的意义何在?到目前为止我所看到的一切似乎都没有用。
    • 这个新类有很多用途,它是一种直接在 wpf 中处理富文档的新方法,无需处理以 .rtf 或任何其他richText 格式编写的临时文件,然后在不同的控件(富文本、flowdocreader 等)中显示它。不过这需要一些时间来适应......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-04
    • 1970-01-01
    • 2011-04-09
    • 1970-01-01
    • 2012-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多