7

.Net 包含一个很好的控件,称为DocumentViewer. 它还提供了一个子控件,用于在加载的文档中查找文本(这至少是它应该做的)。

当插入FixedPage的对象作为 的文档源时DocumentViewer,查找功能只是找不到任何东西。甚至没有一个字母。我还没有尝试过FlowDocument,因为文档DocumentViewer没有那么有用,而且网络上的资源实际上并不存在,我现在想问问 stackoverflow 社区:

让 WPF 的 Find-FunctionDocumentViewer处理FixedPage文档需要什么?

[顺便说一句,我不使用自ControlTemplates定义DocumentViewer]

4

2 回答 2

9

我对 FixedDocuments 也有同样的问题。如果您将 FixedDocument 转换为 XPS 文档,那么它可以正常工作。

从 FixedDocument 在内存中创建 XPS 文档然后在 DocumentViewer 中显示的示例。

// Add to xaml: <DocumentViewer x:Name="documentViewer" />
// Add project references to "ReachFramework" and "System.Printing"
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.IO;
using System.IO.Packaging;
using System.Windows.Xps.Packaging;

namespace WpfApplication1
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            // Set up demo FixedDocument containing text to be searched
            var fixedDocument = new FixedDocument();
            var pageContent = new PageContent();
            var fixedPage = new FixedPage();
            fixedPage.Children.Add(new TextBlock() { Text = "Demo document text." });
            pageContent.Child = fixedPage;
            fixedDocument.Pages.Add(pageContent);

            // Set up fresh XpsDocument
            var stream = new MemoryStream();
            var uri = new Uri("pack://document.xps");
            var package = Package.Open(stream, FileMode.Create, FileAccess.ReadWrite);
            PackageStore.AddPackage(uri, package);
            var xpsDoc = new XpsDocument(package, CompressionOption.NotCompressed, uri.AbsoluteUri);

            // Write FixedDocument to the XpsDocument
            var docWriter = XpsDocument.CreateXpsDocumentWriter(xpsDoc);
            docWriter.Write(fixedDocument);

            // Display XpsDocument in DocumentViewer
            documentViewer.Document = xpsDoc.GetFixedDocumentSequence();
        }
    }
}

在此处输入图像描述

于 2009-05-13T22:18:03.177 回答
1

我在富文本框中搜索文本时遇到了麻烦,它太慢了。我所做的是每次我想搜索时都会压缩xaml。我提高了几个数量级。

这是一个很大的解决方法,基于 Chris Anderson 的书中的一部分。

干杯

于 2008-10-08T16:48:51.737 回答