Im MSDN-Magazin 6.2007 schreibt auf Markus Egger auf den Seiten 65-75 einen sehr interessanten Artikel über "Flexible Inhaltsanzeige mit Flow Documents".
Mit Flow Documents ist ein Entwickler in der Lage, Dokumente intern mit
WPF zu erstellen. Diese werden i.d.R. mit XAML erstellt. Sofern der User das .NET Framework 3.0
auf seinem Rechner installiert hat, kann er sich ein mit FlowDocument
erzeugtes Dokument im Browser ansehen (IE/FF). Ansonsten bietet der
Browser den Download des XAML-Files an. Im aktuellen Mozilla
raucht bei mir die Seite nach dem Aufruf mit einer Fehlermeldung ab.
Bei einem Kollegen hat der Firefox automatisch eine Art PlugIn
installiert, dann funktionierte die Seite. Der Einsatz des Controls ist
nach diesen Erkenntnissen leider noch nicht völlig unbedenklich
möglich.
Das supercoole an der ganzen Sache ist jedoch, das immer, wenn ein Flow
Document angezeigt wird, Features wie Zoom, Paginierung sowie
verschiedene Ansichtsmodi und sogar eine Suchfunktion angeboten
werden. Diese Infos waren mir einen Eigenversuch wert. Flow Documents sind Auflistungen von Blöcken, wie z.B. nachfolgend dargestellt:
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >
<FlowDocument
IsOptimalParagraphEnabled="true" IsHyphenationEnabled="true"
FontFamily="Helvetica">
<FlowDocument.Resources>
<Style x:Key="Style_H1">
<Setter Property="TextElement.FontSize" Value="22" />
<Setter Property="TextElement.FontWeight" Value="Bold" />
</Style>
<Style x:Key="Style_H2">
<Setter Property="TextElement.FontSize" Value="16" />
<Setter Property="TextElement.FontWeight" Value="Bold" />
</Style>
</FlowDocument.Resources>
<Paragraph Style="{StaticResource Style_H1}">
<Figure HorizontalAnchor="ContentLeft" VerticalAnchor="ContentTop"
Width="1Content">
<Paragraph>
Eindrücke von der ersten Microsoft-XTopia-Konferenz vom 9.-11.10.2007
in Berlin
</Paragraph>
</Figure>
</Paragraph>
<Paragraph Style="{StaticResource Style_H2}">
1. Tag
</Paragraph></FlowDocument></Page>
Man sieht, es ist auch die Verwendung von Style-Angaben möglich.
Ebenfalls können Listen und Bilder angewendet bzw. eingebunden werden.
Wie leistungsfähig das FlowDocument wirklich ist, zeigt ein Sample,
das unter http://msdn2.microsoft.com/en-us/library/ms771316.aspx bezogen werden kann. Da kann man nur staunen.
Problematisch war aus meiner Sicht die Texteingabe. Für die
manuelle Erstellung war viel Arbeit notwendig. Aber dies kann ja
auch automatisiert erledigt werden, z.B. dynamisch über einen
Datenbankzugriff. Allerdings muss der Text dann dort schon im
passenden Format vorliegen. Das WPF bietet ein dafür vorgesehenes
RTF-Steuerelement an, das in seinen Funktionen noch sehr rudimentär
ist. Ich bin mir jedoch sicher, dass hier die Zeit für den Entwickler
arbeitet und das geeignete Editoren bald verfügbar sein werden.