Q106. XamDataGrid の表示内容をそのまま印刷したい

A.コードビハインドで Infragistics.Windows.Reporting.Report クラスを使えば、簡単に印刷できます。列幅の変更・ソート・列の移動やフィルタリング等、ユーザーが任意に行った設定や、XamDataGrid に設定したテーマがそのまま印刷に反映されます。


以下サンプルです。

// C#
using Infragistics.Windows.Reporting;

public partial class MainWindow : Window {

    private void Button_Click(Object sender, RoutedEventArgs e) {
        var reportObj = new Report();
        var section = new EmbeddedVisualReportSection(XamDataGrid1);
        reportObj.Sections.Add(section);
        reportObj.Print();
    }
}
' Visual Basic
Option Explicit On
Option Strict On

Imports Infragistics.Windows.Reporting

Public Class MainWindow

    Private Sub Button_Click(sender As Object, e As RoutedEventArgs)
        Dim reportObj = New Report()
        Dim section = New EmbeddedVisualReportSection(XamDataGrid1)
        reportObj.Sections.Add(section)
        reportObj.Print()
    End Sub
End Class
<Window x:Class="MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:igWPF="http://schemas.infragistics.com/xaml/wpf"
        Height="300" Width="545">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="8" />
            <RowDefinition Height="20" />
            <RowDefinition Height="8" />
            <RowDefinition />
            <RowDefinition Height="8" />
            <RowDefinition Height="30" />
            <RowDefinition Height="8" />
        </Grid.RowDefinitions>
        <igWPF:XamDataGrid Grid.Row="3" BindToSampleData="True" x:Name="XamDataGrid1" />
        <Button Grid.Row="5" Width="80" HorizontalAlignment="Right"
                Content="Print" Click="Button_Click"/>
    </Grid>
</Window>


出力結果です。列の移動やソートがそのまま印刷に反映されます。画面に表示されてないすべてのデータも印刷されます。


WPF FAQ の目次に戻る