TOC

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

Controles de texto enriquecido:

The FlowDocumentPageViewer control

En el artículo anterior, discutimos el FlowDocumentScrollViewer, junto con algunas técnicas más generales relacionadas con FlowDocument. En este artículo, nos centraremos en el FlowDocumentPageViewer que, en lugar de simplemente ofrecer un texto de desplazamiento cuando el texto es más largo que el espacio disponible, divide el documento completo en páginas. Esto le permite navegar de una página a otra, brindando una experiencia de lectura más parecida a un libro.

Comenzaremos con un ejemplo simple, donde podemos ver cómo el control FlowDocumentPageViewer maneja nuestro texto de prueba de 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>

Observe cómo se corta el texto largo, y en la parte inferior, puede navegar entre páginas. Sin embargo, esto no es todo lo que FlowDocumentPageViewer hará por usted, solo observe lo que sucede cuando ampliamos la ventana:

En lugar de solo estirar el texto indefinidamente, FlowDocumentPageViewer ahora divide su texto en columnas, para evitar que las líneas se vuelvan demasiado largas. Además de verse bien, esto también aumenta la legibilidad, ya que los textos con líneas muy largas son más difíciles de leer. Por supuesto, el número de páginas se ajusta automáticamente, reduciendo la cantidad de páginas de 5 a 2.

La clase FlowDocument tiene un rango de propiedades que le permitirán controlar cómo y cuándo se usan. Usarlos es simple, pero un ejemplo completo va más allá del alcance de este tutorial. En su lugar, eche un vistazo a este artículo de MSDN, donde se usan varias propiedades en un buen ejemplo: Cómo: Usar los atributos de separación de columnas de FlowDocument.

Buscando

Como está a punto de ver en el siguiente capítulo, el contenedor FlowDocumentReader admite la búsqueda desde el primer momento, con los controles de búsqueda en la barra de herramientas y     todo. Sin embargo, los tres envoltorios de FlowDocument de solo lectura que se tratarán en este tutorial son de hecho compatibles con la búsqueda, debe ser invocado manualmente para los dos primeros (FlowDocumentScrollViewer y FlowDocumentPageViewer).

Los tres visores admiten el método abreviado de teclado Ctrl+F para iniciar una búsqueda, pero si desea que esto sea accesible desde, por ejemplo, un botón también, solo tiene que llamar al método Find(). Aquí hay un ejemplo:

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

Simplemente presione nuestro botón dedicado Search o el método abreviado de teclado (Ctrl+F) y tendrá la función de búsqueda en el FlowDocumentPageViewer. Como se mencionó, esto funciona tanto para FlowDocumentScrollViewer como para FlowDocumentPageViewer (FlowDocumentPageReader tiene un botón de búsqueda por defecto), pero asegúrese de que el cuadro de búsqueda tenga suficiente espacio horizontal en la barra de herramientas ; de lo contrario, no lo verá cuando invoque el comando 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!