WPF: Drucken von Listen

15/07/2009 - 12:14 von Julia M | Report spam
Hallo,

Ich belustige mich gerade mit Beispielen zum Drucken unter WPF.
Was ich zu erreichen versuche, ist der simple Ausdruck einer Liste,
die ich im "Window" des Programms als Itemscontrol darstelle (siehe
unten).

Eine àhnliche Darstellung habe ich in eine "Page" gepackt, die ich als
Formular verwenden möchte und in dem die Daten ebenfalls durch reines
Binding eingetragen werden.

Nur leider finde ich beim besten Willen nicht heraus, wie ich diese
Page an den PrintDocument übergeben muß, damit die Sache funktioniert.

Außerdem scheinen sich alle von mir gefundenen Beispiele darin zu
ergehen, Listen "manuell" mit DrawLine und DrawText und "harter"
Positionierung der Texte herzustellen.
Das erinnert mich irgendwie an meine schlimmsten Zeiten mit VB3,
Printer.Print und APIs :-/
Daß gerade bei Ausdrucken all die schönen Errungenschaften des
strukturierten Fensteraufbaus und der Trennung von Darstellung und
Daten flöten gegangen sein sollen, mag ich gar nicht glauben.

Ich bitte um ein paar erleuchtende Worte

Danke :-)


XAML:

<Grid Grid.Row="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="1*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<TextBlock x:Name="colA" Width="100" Grid.Row="0"
Grid.Column="0" Text="A" FontWeight="Bold"/>
<TextBlock x:Name="colB" Width="30" Grid.Row="0"
Grid.Column="1" Text="B" FontWeight="Bold"/>
<TextBlock x:Name="colC" Width="50" Grid.Row="0"
Grid.Column="2" Text="C" FontWeight="Bold"/>
<TextBlock x:Name="colD" Grid.Row="0" Grid.Column="3"
Text="D" FontWeight="Bold"/>

<ItemsControl Grid.Row="1" Grid.Column="0"
Grid.ColumnSpan="4">

<ItemsControl.Template>
<ControlTemplate TargetType="ItemsControl">
<Border>
<ScrollViewer
VerticalScrollBarVisibility="Auto">
<ItemsPresenter />
</ScrollViewer>
</Border>
</ControlTemplate>
</ItemsControl.Template>

<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Vertical"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>

<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Path=A}"
Margin="0,5" Width="{Binding Path=Width, ElementName=colA}"></
TextBlock>
<TextBlock Text="{Binding Path=B}"
Margin="0,5" Width="{Binding Path=Width, ElementName=colB}" ></
TextBlock>
<TextBlock Text="{Binding Path=C}"
Margin="0,5" Width="{Binding Path=Width, ElementName=colC}"></
TextBlock>
<TextBlock Text="{Binding Path=D}"
Margin="0,5" Width="{Binding Path=Width, ElementName=colD}"></
TextBlock>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>

</Grid>
 

Lesen sie die antworten

#1 Elmar Boye
16/07/2009 - 11:27 | Warnen spam
Hallo Julia,

Julia M schrieb:
Ich belustige mich gerade mit Beispielen zum Drucken unter WPF.
Was ich zu erreichen versuche, ist der simple Ausdruck einer Liste,
die ich im "Window" des Programms als Itemscontrol darstelle (siehe
unten).



Was bei mir die Frage aufwarf:
Willst Du Drucken oder Bildchen ausgeben??? ;-)

WPF noch einiges mehr zu bieten wie XPS, FlowDocument...

Eine kurze Übersicht bietet:
<URL:http://www.ericsink.com/wpf3d/B_Printing.html>
(das 3D im Titel kann man dabei getrost ignorieren)

Gruß Elmar

Ähnliche fragen