TOC

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

Ovládací prvek Rich Text:

Ovládací prvek FlowDocumentPageViewer

V předchozím článku jsme diskutovali ovládací prvek FlowDocumentScrollViewer, spolu s některými obecnějšími technikami souvisejícími s ovládacím prvkem FlowDocument. V tomto článku se zaměříme na FlowDocumentPageViewer, který místo toho, aby jen nabídl rolovací text je-li tento delší než dostupné místo, rozdělí celý dokument na stránky. To umožní přecházet ze stránky na stránku, jako při čtení knihy.

Začneme jednoduchým příkladem, kde uvidíme, jak ovládací prvek FlowDocumentPageViewer zpracovává náš testovací text 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>

Všimněte si, jak je dlouhý text odříznut a jak v dolní části můžete listovat mezi stránkami. To ale není vše, co FlowDocumentPageViewer umí. Stačí se podívat, co se stane, když se okno rozšíří:

Místo prostého rozdělování – stránkování textu v jednom sloupci FlowDocumentPageViewer nyní rozdělí text na sloupce dva, aby se zabránilo příliš dlouhým řádkům. Kromě toho, že to vypadá dobře, to také zvyšuje čitelnost, protože texty s velmi dlouhými řádky je těžší číst. Počet stránek je samozřejmě automaticky upraven, čímž se počet stránek snížil z 5 na 2.

Třída FlowDocument má řadu vlastností, které vám dávají možnosti, jak a kdy je použít. Jejich použití je jednoduché, ale úplný výčet možností přesahuje rozsah tohoto kurzu. Místo toho se podívejte na tento článek na MSDN, kde pěkný příkladu ukazuje několik dalších vlastností: How to: Use FlowDocument Column-Separating Attributes

Vyhledávání

Jak uvidíte v další kapitole, prvek FlowDocumentReader ihned podporuje vyhledávání díky ovládacím prvkům hledání umístěným v panelu nástrojů. Nicméně, všechny tři prvky FlowDocument, které budou popsány dále v tomto kurzu, mají atribut jen pro čtení. Implicitně podporují vyhledávání, ale první dva - (FlowDocumentScrollViewer a FlowDocumentPageViewer) musí být nastaveny ručně.

Všichni tři prohlížeče podporují pro zahájení vyhledávání klávesovou zkratku Ctrl+F , ale pokud chcete, aby vyhledávání bylo spuštěno například tlačítkem, stačí zavolat metodu Find(). Zde je příklad:

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

Jednoduše stiskněte naše vyhledávací tlačítko Search nebo použijte klávesovou zkratku (Ctrl+F) a vyvoláte tím ve FlowDocumentPageViewer funkci vyhledávání. Jak již bylo zmíněno, funguje to jak pro FlowDocumentScrollViewer tak i pro FlowDocumentPageViewer (FlowDocumentPageReader má vyhledávací tlačítko ve výchozím nastavení). Musíte ale zajistit dostatek místa pro vodorovné vyhledávací pole na panelu nástrojů - jinak jej při vyvolání příkazu Find() nebudete vidět.

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!