首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DocumentViewer查找函数和FixedPage文档

DocumentViewer查找函数和FixedPage文档
EN

Stack Overflow用户
提问于 2008-10-08 15:01:08
回答 2查看 7.6K关注 0票数 7

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

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

它需要什么使WPF DocumentViewer的查找函数与FixedPage文档一起工作?

顺便说一句,我不使用自定义ControlTemplates来实现DocumentViewer

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-05-13 22:18:03

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

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

代码语言:javascript
复制
// 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();
        }
    }
}

票数 9
EN

Stack Overflow用户

发布于 2008-10-08 16:48:51

我在富文本框中搜索文本时遇到了麻烦,它太慢了。我所做的就是每次我想搜索的时候都要处理好xaml。我改进了几个数量级。

这是一个很大的解决方案,基于克里斯安德森的的一部分。

干杯

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/183249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档