TOC

This article is currently in the process of being translated into Vietnamese (~82% done).

Rich Text controls:

The FlowDocumentPageViewer control

Ở trong bài viết trước, chúng ta đã thảo luận về FlowDocumentScrollViewer, cùng vơi một kĩ thuật liên quan đến FlowDocument. Trong bài viết này, chúng tôi sẽ tập trung vào FlowDocumentPageViewer, thay vì chỉ cung cấp văn bản cuộn khi văn bản dài hơn không gian có sẵn, hãy chia toàn bộ tài liệu thành các trang. Điều này cho phép bạn điều hướng từ trang này sang trang khác, mang lại trải nghiệm đọc giống như một cuốn sách hơn.

Chúng ta sẽ bắt đầu với một ví dụ đơn giản, nơi chúng ta có thể xem cách FlowDocumentPageViewer xử lý văn bản Lorem Ipsum

<Window x:Class="WpfTutorialSamples.Rich_text_controls.FlowDocumentPageViewerSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="FlowDocumentPageViewerSample" Height="300" Width="300">
    <Grid>
        <FlowDocumentPageViewer>
            <FlowDocument>
                <Paragraph>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce faucibus odio arcu, luctus vestibulum tortor congue in. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce nec lacinia neque. Donec malesuada, ligula non vestibulum cursus, urna purus pellentesque orci, aliquet accumsan dui velit ac justo. Phasellus sagittis ligula in leo dapibus, vel vestibulum felis mattis. Fusce vitae auctor nibh. Ut sit amet fringilla turpis. Aenean tincidunt feugiat sapien, quis scelerisque enim pretium commodo. Mauris fermentum posuere nulla, vitae fermentum quam malesuada in. Cras ultrices bibendum nulla eu mollis. Sed accumsan pretium magna, non sodales velit viverra id. Sed eu elit sit amet sem ullamcorper rhoncus.</Paragraph>
                <Paragraph>Nulla vitae suscipit tellus. Nunc sit amet tortor fermentum, sollicitudin enim cursus, sagittis lacus. Pellentesque tincidunt massa nisl, nec tempor nulla consequat a. Proin pharetra neque vel dolor congue, at condimentum arcu varius. Sed vel luctus enim. Curabitur eleifend dui et arcu faucibus, sit amet vulputate libero suscipit. Vestibulum ultrices nisi id metus ultrices, eu ultricies ligula rutrum. Phasellus rhoncus aliquam pretium. Quisque in nunc erat. Etiam mollis turpis cursus, sagittis felis vel, dignissim risus. Ut at est nec tellus lobortis venenatis. Fusce elit mi, gravida sed tortor at, faucibus interdum felis. Phasellus porttitor dolor in nunc pellentesque, eu hendrerit nulla porta. Vestibulum cursus placerat elit. Nullam malesuada dictum venenatis. Interdum et malesuada fames ac ante ipsum primis in faucibus.</Paragraph>
            </FlowDocument>
        </FlowDocumentPageViewer>
    </Grid>
</Window>

Chú ý cách cắt bỏ văn bản dài và ở dưới cùng, bạn có thể điều hướng giữa các trang. Đây không phải là tất cả những gì FlowDocumentPageViewer sẽ làm cho bạn - chỉ cần xem điều gì sẽ xảy ra khi chúng ta mở rộng cửa sổ :

Thay vì chỉ kéo dài văn bản vô thời hạn, FlowDocumentPageViewer chia văn bản của bạn thành các cột, để ngăn các dòng trở nên quá dài. Bên cạnh việc nhìn đẹp, điều này cũng làm tăng khả năng đọc, vì các văn bản có dòng rất dài sẽ khó đọc hơn. Tất nhiên, số lượng trang sẽ được tự động điều chỉnh, giảm số lượng trang từ 5 xuống 2.

Lớp FlowDocument có một số các thuộc tính cho phép bạn kiểm soát cách thức và thời điểm chúng được sử dụng. Sử dụng chúng rất đơn giản, nhưng một ví dụ hoàn chỉnh vượt ra ngoài phạm vi của hướng dẫn này. Thay vào đó, hãy xem bài viết MSDN này, trong đó một số thuộc tính được sử dụng trong một ví dụ hay: How to: Use FlowDocument Column-Separating Attributes.

Searching

Khi bạn sắp xem trong chương tiếp theo, FlowDocumentReader wrapper hỗ trợ tìm kiếm ngay lập tức, với các điều khiển tìm kiếm trong thanh công cụ và mọi thứ. Tuy nhiên, tất cả ba FlowDocument wrappers chỉ đọc sẽ được thảo luận trong hướng dẫn này trên thực tế hỗ trợ tìm kiếm, nó chỉ phải được gọi theo cách thủ công cho hai trình đầu tiên (FlowDocumentScrollViewer và FlowDocumentPageViewer).

Cả ba trình viewers đều hỗ trợ phím tắt Ctrl+F để bắt đầu tìm kiếm, nhưng nếu bạn muốn có thể truy cập phím này từ một button , bạn chỉ cần gọi phương thức Find (). Đây là một ví dụ:

<Window x:Class="WpfTutorialSamples.Rich_text_controls.FlowDocumentSearchSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="FlowDocumentSearchSample" Height="300" Width="580">
    <DockPanel>
        <WrapPanel DockPanel.Dock="Top">
            <Button Name="btnSearch" Click="btnSearch_Click">Search</Button>
        </WrapPanel>
        <FlowDocumentPageViewer Name="fdViewer">
            <FlowDocument>
                <Paragraph>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce faucibus odio arcu, luctus vestibulum tortor congue in. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce nec lacinia neque. Donec malesuada, ligula non vestibulum cursus, urna purus pellentesque orci, aliquet accumsan dui velit ac justo. Phasellus sagittis ligula in leo dapibus, vel vestibulum felis mattis. Fusce vitae auctor nibh. Ut sit amet fringilla turpis. Aenean tincidunt feugiat sapien, quis scelerisque enim pretium commodo. Mauris fermentum posuere nulla, vitae fermentum quam malesuada in. Cras ultrices bibendum nulla eu mollis. Sed accumsan pretium magna, non sodales velit viverra id. Sed eu elit sit amet sem ullamcorper rhoncus.</Paragraph>
                <Paragraph>Nulla vitae suscipit tellus. Nunc sit amet tortor fermentum, sollicitudin enim cursus, sagittis lacus. Pellentesque tincidunt massa nisl, nec tempor nulla consequat a. Proin pharetra neque vel dolor congue, at condimentum arcu varius. Sed vel luctus enim. Curabitur eleifend dui et arcu faucibus, sit amet vulputate libero suscipit. Vestibulum ultrices nisi id metus ultrices, eu ultricies ligula rutrum. Phasellus rhoncus aliquam pretium. Quisque in nunc erat. Etiam mollis turpis cursus, sagittis felis vel, dignissim risus. Ut at est nec tellus lobortis venenatis. Fusce elit mi, gravida sed tortor at, faucibus interdum felis. Phasellus porttitor dolor in nunc pellentesque, eu hendrerit nulla porta. Vestibulum cursus placerat elit. Nullam malesuada dictum venenatis. Interdum et malesuada fames ac ante ipsum primis in faucibus.</Paragraph>
            </FlowDocument>
        </FlowDocumentPageViewer>
    </DockPanel>
</Window>
using System;
using System.Windows;

namespace WpfTutorialSamples.Rich_text_controls
{
	public partial class FlowDocumentSearchSample : Window
	{
		public FlowDocumentSearchSample()
		{
			InitializeComponent();
		}

		private void btnSearch_Click(object sender, RoutedEventArgs e)
		{
			fdViewer.Find();
		}
	}
}

Simply press our dedicated Search button or the keyboard shortcut (Ctrl+F) and you have search functionality in the FlowDocumentPageViewer. As mentioned, this works for both FlowDocumentScrollViewer and FlowDocumentPageViewer (FlowDocumentPageReader has a search button by default), but make sure that the search box has enough horizontal room on the toolbar - otherwise you won't see it when you invoke the Find() command!

This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!