Skip to main content

CollectionViewLink Class

A link to print objects which implement the ICollectionView interface.

Namespace: DevExpress.Xpf.Printing

Assembly: DevExpress.Xpf.Printing.v22.2.dll

NuGet Package: DevExpress.Wpf.Printing



If the CollectionViewLink.CollectionView property is not set, calling the LinkBase.CreateDocument method fails with an exception.


The following example demonstrates how to use the CollectionViewLink class to print data from a hierarchical datasource, which implements the ICollectionView interface.

For this, it is necessary to do the following:

View Example

using System;
using System.ComponentModel;
using System.Globalization;
using System.Windows;
using System.Windows.Data;
using DevExpress.Xpf.Printing;
// ...
private void button1_Click(object sender, RoutedEventArgs e) {
    // Create a link and bind it to the PrintPreview instance.
    CollectionViewLink link = new CollectionViewLink();
    //preview.Model = new LinkPreviewModel(link);

    // Create an ICollectionView object.
    link.CollectionView = CreateMonthCollectionView();

    // Provide export templates.
    link.DetailTemplate = (DataTemplate)Resources["monthNameTemplate"];
    link.GroupInfos.Add(new GroupInfo((DataTemplate)Resources["monthQuarterTemplate"]));

    // Create a document.

    // Show a Print Preview.
    PrintHelper.ShowPrintPreviewDialog(this, link);

private ICollectionView CreateMonthCollectionView() {
    const int monthCount = 12;
    string[] monthNames = CultureInfo.CurrentCulture.DateTimeFormat.MonthNames;

    MonthItem[] data = new MonthItem[Math.Min(monthNames.Length, monthCount)];
    for (int i = 0; i < data.Length; i++) {
        data[i] = new MonthItem(monthNames[i], (i / 3) + 1);

    CollectionViewSource source = new CollectionViewSource();
    source.Source = data;
    source.GroupDescriptions.Add(new PropertyGroupDescription("Quarter"));

    return source.View;

public class MonthItem {
    public string Name { get; private set; }
    public int Quarter { get; private set; }

    public MonthItem(string name, int quarter) {
        Name = name;
        Quarter = quarter;
See Also