Back to Devexpress

CollectionViewLink.GroupInfos Property

wpf-devexpress-dot-xpf-dot-printing-dot-collectionviewlink-3066d524.md

latest6.7 KB
Original Source

CollectionViewLink.GroupInfos Property

Provides access to a collection of objects, which store information about grouping.

Namespace : DevExpress.Xpf.Printing

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

NuGet Package : DevExpress.Wpf.Printing

Declaration

csharp
public GroupInfoCollection GroupInfos { get; }
vb
Public ReadOnly Property GroupInfos As GroupInfoCollection

Property Value

TypeDescription
GroupInfoCollection

A GroupInfoCollection instance, representing a collection of GroupInfo objects.

|

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:

View Example

csharp
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;
    }
}
xaml
<Window.Resources>
    <DataTemplate x:Key="monthNameTemplate">
        <dxe:TextEdit Text="{Binding Path=Content.Name, Mode=OneWay}" />
    </DataTemplate>
    <DataTemplate x:Key="monthQuarterTemplate">
        <dxe:TextEdit Text="{Binding Path=Content.Name, Mode=OneWay}" FontWeight="Bold" />
    </DataTemplate>
</Window.Resources>
vb
Imports System
Imports System.ComponentModel
Imports System.Globalization
Imports System.Windows
Imports System.Windows.Data
Imports DevExpress.Xpf.Printing
' ...
Private Sub button1_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
    ' Create a link and bind it to the PrintPreview instance.
    Dim link As New CollectionViewLink()
    'preview.Model = new LinkPreviewModel(link);

    ' Create an ICollectionView object.
    link.CollectionView = CreateMonthCollectionView()

    ' Provide export templates.
    link.DetailTemplate = DirectCast(Resources("monthNameTemplate"), DataTemplate)
    link.GroupInfos.Add(New GroupInfo(DirectCast(Resources("monthQuarterTemplate"), DataTemplate)))

    ' Create a document.
    link.CreateDocument(True)

    ' Show a Print Preview.
    PrintHelper.ShowPrintPreviewDialog(Me, link)
End Sub

Private Function CreateMonthCollectionView() As ICollectionView
    Const monthCount As Integer = 12
    Dim monthNames() As String = CultureInfo.CurrentCulture.DateTimeFormat.MonthNames

    Dim data(Math.Min(monthNames.Length, monthCount) - 1) As MonthItem
    For i As Integer = 0 To data.Length - 1
        data(i) = New MonthItem(monthNames(i), (i \ 3) + 1)
    Next i

    Dim source As New CollectionViewSource()
    source.Source = data
    source.GroupDescriptions.Add(New PropertyGroupDescription("Quarter"))

    Return source.View
End Function

Public Class MonthItem
    Private privateName As String
    Public Property Name() As String
        Get
            Return privateName
        End Get
        Private Set(ByVal value As String)
            privateName = value
        End Set
    End Property
    Private privateQuarter As Integer
    Public Property Quarter() As Integer
        Get
            Return privateQuarter
        End Get
        Private Set(ByVal value As Integer)
            privateQuarter = value
        End Set
    End Property

    Public Sub New(ByVal name As String, ByVal quarter As Integer)
        Me.Name = name
        Me.Quarter = quarter
    End Sub
End Class

See Also

CollectionViewLink Class

CollectionViewLink Members

DevExpress.Xpf.Printing Namespace