This article has been localized into German by the community.
Das FlowDocumentPageViewer-Steuerelement
Im vorherigen Artikel haben wir den FlowDocumentScrollViewer zusammen mit einigen allgemeineren FlowDocument-bezogenen Techniken diskutiert. In diesem Artikel konzentrieren wir uns auf den FlowDocumentPageViewer, der nicht nur einen Scrolltext anbietet, wenn der Text länger als der verfügbare Platz wird, sondern das gesamte Dokument in Seiten aufteilt. So können Sie von Seite zu Seite navigieren und erhalten ein Leseerlebnis ähnlich eines Buches.
Wir beginnen mit einem einfachen Beispiel, mit dem wir beobachten, wie der FlowDocumentPageViewer mit unserem Lorem Ipsum-Blindtext umgeht:
<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>
Beachten Sie, wie der Text abgeschnitten wird, unten können Sie zwischen den Seiten navigieren. Das ist aber nicht alles, was der FlowDocumentPageViewer für Sie tun kann - schauen Sie nur, was passiert, wenn wir das Fenster breiter machen:
Statt einfach nur die Zeilen länger zu machen, teilt der FlowDocumentPageViewer Ihren Text nun in Spalten auf, um zu verhindern, dass Zeilen zu lang werden. Das sieht nicht nur gut aus, sondern erhöht auch die Lesbarkeit, da Texte mit sehr langen Zeilen schwieriger zu lesen sind. Die Seitenzahl wird natürlich automatisch angepasst, wodurch die Anzahl der Seiten von 5 auf 2 reduziert wird.
Die FlowDocument-Klasse verfügt über eine Reihe von Eigenschaften. Die Benutzung ist im Grunde einfach, aber ein komplettes Beispiel würde über den Rahmen dieses Tutorials hinausgehen. Schauen Sie sich stattdessen diesen MSDN-Artikel an, in dem mehrere Eigenschaften in einem schönen Beispiel verwendet werden: Gewusst wie: Verwenden von FlowDocument-Attributen für die Trennung von Spalten.
Suchen
Wie Sie im nächsten Kapitel sehen werden, ist im FlowDocumentReader Wrapper eine Suchfunktion schon eingebaut, mit Such-Steuerelementen in der Symbolleiste und allem, was dazu gehört. Aber alle drei schreibgeschützten FlowDocument Wrapper, die in diesem Tutorial behandelt werden, unterstützen die Suche, sie müssen nur für die ersten beiden (FlowDocumentScrollViewer und FlowDocumentPageViewer) manuell aufgerufen werden.
Alle drei Viewer unterstützen die Tastenkombination Strg+F, um eine Suche zu starten, aber wenn Sie möchten, dass diese auch von z.B. einer Schaltfläche aus zugänglich ist, müssen Sie nur die Methode Find() aufrufen. Hier ist ein Beispiel:
<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();
}
}
}
Drücken Sie einfach den speziellen Search-Button oder die Tastenkombination (Strg+F) und Sie haben Suchfunktionalität im FlowDocumentPageViewer. Wie bereits erwähnt, funktioniert dies sowohl für den FlowDocumentScrollViewer als auch für den FlowDocumentPageViewer (der FlowDocumentPageReader hat standardmäßig eine Suchschaltfläche), aber stellen Sie sicher, dass das Suchfeld genügend Platz in der Symbolleiste hat - sonst sehen Sie es nicht, wenn Sie den Befehl Find() aufrufen!