.Net包含一个名为DocumentViewer的很好的控件。它还提供了一个子控件,用于在加载的文档中查找文本(至少应该这样做)。
当将FixedPage的对象作为DocumentViewer的文档源时,查找功能根本找不到任何东西。甚至连一个字母都找不到。我还没有尝试过FlowDocument的文档,因为DocumentViewer的文档并不那么有用,而且网络上的资源实际上并不存在,我现在想问堆栈溢出社区:
它需要什么使WPF DocumentViewer的查找函数与FixedPage文档一起工作?
顺便说一句,我不使用自定义ControlTemplates来实现DocumentViewer
发布于 2009-05-13 22:18:03
我对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();
}
}
}

发布于 2008-10-08 16:48:51
https://stackoverflow.com/questions/183249
复制相似问题