TOC

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

Элементы управления текстом:

Элемент управления FlowDocumentPageViewer

В предыдущей статье мы обсудили FlowDocumentScrollViewer, а также некоторые более общие методы, связанные с FlowDocument. В этой статье мы сфокусируемся на FlowDocumentPageViewer который вместо того, чтобы предлагать просто прокрутку текста, когда текст не помещается на доступном месте, делит документ на страницы. Это позволяет вам перемещаться от страницы к странице, на подобии книги.

Мы начнем с простого примера, где сможем увидеть, как элемент управления FlowDocumentPageViewer обрабатывает наш тестовый текст 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>

Обратите внимание, как обрезается длинный текст, и внизу вы можете перемещаться между страницами. Но это еще не все, что FlowDocumentPageViewer может сделать - просто посмотрите, что произойдет, когда мы расширим окно:

Вместо того, чтобы просто растягивать текст бесконечно, FlowDocumentPageViewer теперь разделяет ваш текст на столбцы, чтобы строки не становились слишком длинными. Помимо хорошего внешнего вида, это также повышает удобочитаемость, поскольку тексты с очень длинными строками труднее читать. Количество страниц, конечно, настраивается автоматически, в результате чего количество страниц уменьшается с 5 до 2.

Класс FlowDocument имеет ряд дополнительных свойств. Использовать их просто, но полное описание их всех выходит за рамки данного руководства. Вместо этого, посмотрите статью MSDN, где несколько хороших свойств используются в примере: How to: Use FlowDocument Column-Separating Attributes.

Поиск

Как вы увидите в следующей главе, оболочка FlowDocumentReader поддерживает поиск прямо из коробки, с элементами управления поиском на панели инструментов и всем остальным. Однако все три обертки FlowDocument, доступные только для чтения, которые будут обсуждаться в этом учебном пособии, фактически поддерживают поиск, его просто нужно вызвать вручную для первых двух (FlowDocumentScrollViewer и FlowDocumentPageViewer)

Все три средства просмотра поддерживают сочетание клавиш Ctrl+F для запуска поиска, но если вы хотите, чтобы это было доступно, например, с кнопки также, вы просто должны вызвать метод Find (). Вот пример:

<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();
		}
	}
}

Просто нажмите нашу специальную кнопку Search или сочетание клавиш (Ctrl+F), и у вас появится функция поиска в FlowDocumentPageViewer. Как уже упоминалось, это работает как для FlowDocumentScrollViewer, так и для FlowDocumentPageViewer (у FlowDocumentPageReader есть кнопка поиска по умолчанию), но убедитесь, что в окне поиска достаточно горизонтального пространства на панели инструментов , иначе вы его не увидите, когда вызовите команду Find ()!

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!