Print Preview Popup as FixedDocument
(1) PageContent will has Compiler Error but can stil render with FixedPage---Known Defect of WPF.
(2) Fixed document will has toolbar shown by WPF, no coded needed. So this is simplest printing
<Window x:Class="TestWPFPrinting.PrintPreview"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="PrintPreview" Height="300" Width="300">
<FixedDocument Name="customerReport">
<PageContent>
<FixedPage>
<Label FontSize="20" Margin="100,20,0,0">REPORT</Label>
<ListView BorderThickness="0" Margin="50,100,0,0" FontSize="14" Width="Auto" Height="Auto" ItemsSource="{Binding}">
<ListView.View>
<GridView x:Name="gridReport">
<GridViewColumn Width="200" Header="FirstName" DisplayMemberBinding="{Binding Path=FirstName}">
<GridViewColumn.CellTemplate>
<DataTemplate>
<Label/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="200" Header="LastName" DisplayMemberBinding="{Binding Path=LastName}">
<GridViewColumn.CellTemplate>
<DataTemplate>
<Label/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
</FixedPage>
</PageContent>
</FixedDocument>
</Window>
Bind to Data
public partial class PrintPreview : Window
{
private List<Customer> _customers;
public PrintPreview(List<Customer> customers)
{
InitializeComponent();
_customers = customers;
// generate report
this.DataContext = _customers;
}
}
public class Customer
{
private string _firstName;
private string _lastName;
public string FirstName
{
get { return _firstName; }
set { _firstName = value; }
}
public string LastName
{
get { return _lastName; }
set { _lastName = value; }
}
}
Main Form
private void button1_Click(object sender, RoutedEventArgs e)
{
List<Customer> customers = new List<Customer>();
for (int i = 1; i <= 200; i++)
{
Customer customer = new Customer();
customer.FirstName = "FirstName " + i;
customer.LastName = "LastName " + i;
customers.Add(customer);
}
PrintPreview w = new PrintPreview(customers);
w.Show();
Sunday, January 29, 2012
WPF Printing using FixedDcoument
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment