在ScrollViewer中打印所有内容 - Silverlight

时间:2011-12-03 06:21:34

标签: silverlight silverlight-4.0

我在ScrollViewer Control中显示了大约100条记录。当我打印ScrollViewer Control时,它只打印当前视图(10条记录)。如何一次打印所有100个数据?

1 个答案:

答案 0 :(得分:1)

您可能希望在Silverlight中使用PrintDocument类。 用法就像..

在XAML文件中创建列表为

 <ScrollViewer Height="300" VerticalScrollBarVisibility="Auto">
            <ItemsControl x:Name="printSurface">
                <ItemsControl.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Horizontal"
                    Height="25">
                            <TextBlock Width="100"
                     Text="{Binding Name}" />
                            <TextBlock Width="75"
                     Text="{Binding Genre.Name}" />
                            <TextBlock Width="50"
                     Text="{Binding Price, StringFormat=c}" />
                        </StackPanel>
                    </DataTemplate>
                </ItemsControl.ItemTemplate>
            </ItemsControl>
        </ScrollViewer>

背后的代码看起来像。

void printButton_Click(object sender, RoutedEventArgs e)
{
  PrintDocument doc = new PrintDocument();
  doc.PrintPage += new EventHandler<PrintPageEventArgs>(doc_PrintPage);
  doc.Print("Page title");
}

void doc_PrintPage(object sender, PrintPageEventArgs e)
{
  // Stretch to the size of the printed page
  printSurface.Width = e.PrintableArea.Width;
  printSurface.Height = e.PrintableArea.Height;

  // Assign the XAML element to be printed
  e.PageVisual = printSurface;

  // Specify whether to call again for another page
  e.HasMorePages = false;
}