Skip to main content
A newer version of this page is available. .

CollectionViewLink Class

A link to print objects which implement the ICollectionView interface.

Namespace: DevExpress.Xpf.Printing

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

Declaration

Remarks

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

Example

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:

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.
    link.CreateDocument(true);

    // 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;
    }
}

The following code snippet (auto-collected from DevExpress Examples) contains a reference to the CollectionViewLink class.

Note

The algorithm used to collect these code examples remains a work in progress. Accordingly, the links and snippets below may produce inaccurate results. If you encounter an issue with code examples below, please use the feedback form on this page to report the issue.

See Also