2008-10-08 22 views
7

. Net chứa một điều khiển tốt đẹp được gọi là DocumentViewer. nó cũng cung cấp một subcontrol cho việc tìm kiếm văn bản trong tài liệu được tải (đó là ít nhất là những gì nó được cho là phải làm).WPF DocumentViewer Tìm-chức năng và tài liệu FixedPage

Khi chèn các đối tượng của FixedPage làm nguồn tài liệu cho DocumentViewer, chức năng tìm không tìm thấy bất kỳ thứ gì. Thậm chí không có chữ cái duy nhất. Tôi đã không cố gắng FlowDocument 's nào, như tài liệu cho DocumentViewer không phải là hữu ích và các tài nguyên trên mạng không thực sự tồn tại, bây giờ tôi muốn đề nghị cộng đồng stackoverflow:

gì nó cần để có được chức năng Tìm kiếm của WPF DocumentViewer hoạt động với tài liệu FixedPage?

[btw, tôi không sử dụng tùy chỉnh ControlTemplates cho DocumentViewer]

Trả lời

8

Tôi gặp vấn đề tương tự với FixedDocuments. Nếu bạn chuyển đổi FixedDocument của bạn thành một tài liệu XPS thì nó hoạt động tốt.

Ví dụ về việc tạo Tài liệu XPS trong bộ nhớ từ FixedDocument sau đó hiển thị trong 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(); 
     } 
    } 
} 

enter image description here

+0

+1 làm việc một cách hoàn hảo đối với tôi –

1

tôi đã gặp rắc rối với tìm kiếm văn bản trong richtextbox, nó là quá chậm. Những gì tôi đã làm là crunch xaml mỗi khi tôi muốn tìm kiếm. Tôi đã cải thiện một số đơn đặt hàng của cường độ.

Đó là giải pháp lớn dựa trên một phần của số book của Chris Anderson.

Chúc mừng

Các vấn đề liên quan