This article is currently in the process of being translated into Italian (~98% done).
Introduction to WPF Rich Text controls
In altri frameworks dedicati alla creazione di UI ("User Interfaces"), ad esempio WinForms, visualizzare grandi quantità di testo formattato è sempre stato problematico. Certo era possibile caricare un file in un componente RichTextBox, o creare un oggetto WebBrowser e caricare una pagina web (salvata sia in locale che in remoto), ma specificare quantità più elevate di testo formattato al momento del design non era, di fatto, possible. Sembra che Microsoft abbia voluto offrire un rimedio a tale problematica in WPF, offrendo persino la possibilità di andare oltre la semplice visualizzazione del testo.
L'oggetto FlowDocument offre la possibilità di visualizzare testo formattato, oltre ad immagini, liste e tabelle. Inoltre gli elementi inseriti possono essere ridisposti dinamicamente definendo la direzione del "float". Insomma, usando un oggetto FlowDocument è possibile specificare testo formattato come in HTML (grazie ad XAML) e visualizzarlo direttamente nella tua applicazione WPF.
L'oggetto FlowDocument non è un elemento autonomo. Al contrario si serve di diversi wrapper integrati che controllano come l'oggetto FlowDocument viene disposto, e se il contenuto in esso visualizzato possa essere modificato dall'utente o meno. WPF dispone di tre controlli per la visualizzazione di un oggetto FlowDocument in modalità "read-only", ognuno predisposto per offrire rapido accesso a funzioni di zoom e stampa:
FlowDocumentScrollViewer - il più semplice wrapper di un oggetto FlowDocument, la sua funzione è semplicemente di visualizzare il documento come un lungo testo possibile da scorrere ("scroll")
FlowDocumentPageViewer - questo wrapper gestisce automaticamente la suddivisione del documento in pagine che l'utente può liberamente sfogliare avanti e indietro.
FlowDocumentReader - rappresenta una combinazione del FlowDocumentScrollViewer e del FlowDocumentPageViewer, offrendo all'utente la possibilità di decidere quale delle due visualizzazioni preferisce utilizzare. Offre inoltre la possibiltà E l'interfaccia necessaria per eseguire ricerche nel documento
L'oggetto FlowDocument è generalmente utilizzato in modalità "read-only", ma una volta inserito in un componente RichTextBox (descritto più avanti in questo tutorial) diventa possibile modificarne il contenuto in modo molto simile a quello offerto da veri software di scrittura (come Microsoft Word).
Prosegui nella lettura dei prossimi capitoli: descriveremo tutti i diversi wrapper utilizzabili in combinazione con l'oggetto FlowDocument, sia per situazioni in cui l'interazione con l'utente vuole essere limitata ("read only"), sia per casi in cui, invece, il contenuto può essere modificato. Una volta conclusa la rassegna, considereremo tutte le diverse possibilità offerte dall'oggetto FlowDocument nella creazione di documenti formattati, includendo tabelle, liste, immagine e molto altro ancora.