CollectionViewSource CollectionViewSource CollectionViewSource CollectionViewSource Class

Definition

Provides a data source that adds grouping and current-item support to collection classes.

public : sealed class CollectionViewSource : DependencyObject, ICollectionViewSource
struct winrt::Windows::UI::Xaml::Data::CollectionViewSource : DependencyObject, ICollectionViewSource
public sealed class CollectionViewSource : DependencyObject, ICollectionViewSource
Public NotInheritable Class CollectionViewSource Inherits DependencyObject Implements ICollectionViewSource
<CollectionViewSource .../>
Inheritance
CollectionViewSourceCollectionViewSourceCollectionViewSourceCollectionViewSource
Attributes
Windows 10 requirements
Device family
Windows 10 (introduced v10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (introduced v1)

Examples

The following code example demonstrates how to bind a ListBox control to the results of a grouping LINQ query. In this example, a collection of teams is grouped by city and displayed with the city name as the group headers. For the complete code listing, see the XAML data binding sample. For additional example code on grouping, see the XAML GridView grouping and SemanticZoom sample.

<Grid>

  <Grid.Resources>
    <CollectionViewSource x:Name="groupInfoCVS" IsSourceGrouped="true"/>
  </Grid.Resources>

  <ListBox x:Name="lbGroupInfoCVS" 
    ItemsSource="{Binding Source={StaticResource groupInfoCVS}}">

    <ListBox.GroupStyle>
      <GroupStyle>
        <GroupStyle.HeaderTemplate>
          <DataTemplate>

            <TextBlock Text="{Binding Key}"/>

          </DataTemplate>
        </GroupStyle.HeaderTemplate>
      </GroupStyle>
    </ListBox.GroupStyle>

    <ListBox.ItemTemplate>
      <DataTemplate>

        <Border Background="{Binding Color}" 
          Width="200" CornerRadius="10" HorizontalAlignment="Left">

          <TextBlock Text="{Binding Name}" 
            Style="{StaticResource DescriptionTextStyle}" 
            HorizontalAlignment="Center" FontWeight="Bold"/>

        </Border>
      </DataTemplate>
    </ListBox.ItemTemplate>

  </ListBox>

</Grid>
Teams teams = new Teams();
var result = 
    from t in teams 
    group t by t.City into g 
    orderby g.Key 
    select g;
groupInfoCVS.Source = result;

Remarks

Use CollectionViewSource when you want to bind list controls to collections, but you want to display those collections in groups and maintain a current item independent from the list control. This is particularly useful when you want to bind multiple controls to the same collection and you want the current item in one control to change the current item in the other bound controls. You typically define a CollectionViewSource as a XAML resource and bind to it using the {StaticResource} markup extension. You can then set its Source property in code-behind to a supported collection type.

Any controls that you bind to the same CollectionViewSource will always have the same current item. You can access the current item programmatically through the ICollectionView.CurrentItem property of the CollectionViewSource.View property value.

If the items in the collection are collections themselves, or are objects that contain collections, you can display the collections as groups within the larger collection. To do this, set the IsSourceGrouped property to true. If the items contain collections but are not collections themselves, you must also set the ItemsPath property to the name of the collection property.

Note

Setting the Source property to another CollectionViewSource instance is not supported.

Constructors

CollectionViewSource() CollectionViewSource() CollectionViewSource() CollectionViewSource()

Initializes a new instance of the CollectionViewSource class.

public : CollectionViewSource()
CollectionViewSource() const;
public CollectionViewSource()
Public Sub New()
See Also

Properties

Dispatcher Dispatcher Dispatcher Dispatcher

Gets the CoreDispatcher that this object is associated with. The CoreDispatcher represents a facility that can access the DependencyObject on the UI thread even if the code is initiated by a non-UI thread.

(Inherited from DependencyObject)

IsSourceGrouped IsSourceGrouped IsSourceGrouped IsSourceGrouped

Gets or sets a value that indicates whether source data is grouped.

public : Platform::Boolean IsSourceGrouped { get; set; }
bool IsSourceGrouped(); void IsSourceGrouped(bool issourcegrouped);
public bool IsSourceGrouped { get; set; }
Public ReadWrite Property IsSourceGrouped As bool
<CollectionViewSource IsSourceGrouped="bool" .../>
Value
bool bool

true if data is grouped. false if data is not grouped.

Examples

The following code example demonstrates how to bind a ListBox control to the results of a grouping LINQ query. In this example, a collection of teams is grouped by city and displayed with the city name as the group headers. For the complete code listing, see the XAML data binding sample. For additional example code on grouping, see the Grouped GridView sample.

<Grid>

  <Grid.Resources>
    <CollectionViewSource x:Name="groupInfoCVS" IsSourceGrouped="true"/>
  </Grid.Resources>

  <ListBox x:Name="lbGroupInfoCVS" 
    ItemsSource="{Binding Source={StaticResource groupInfoCVS}}">

    <ListBox.GroupStyle>
      <GroupStyle>
        <GroupStyle.HeaderTemplate>
          <DataTemplate>

            <TextBlock Text="{Binding Key}"/>

          </DataTemplate>
        </GroupStyle.HeaderTemplate>
      </GroupStyle>
    </ListBox.GroupStyle>

    <ListBox.ItemTemplate>
      <DataTemplate>

        <Border Background="{Binding Color}" 
          Width="200" CornerRadius="10" HorizontalAlignment="Left">

          <TextBlock Text="{Binding Name}" 
            Style="{StaticResource DescriptionTextStyle}" 
            HorizontalAlignment="Center" FontWeight="Bold"/>

        </Border>
      </DataTemplate>
    </ListBox.ItemTemplate>

  </ListBox>

</Grid>
Teams teams = new Teams();
var result = 
    from t in teams 
    group t by t.City into g 
    orderby g.Key 
    select g;
groupInfoCVS.Source = result;
See Also

IsSourceGroupedProperty IsSourceGroupedProperty IsSourceGroupedProperty IsSourceGroupedProperty

Identifies the IsSourceGrouped dependency property.

public : static DependencyProperty IsSourceGroupedProperty { get; }
static DependencyProperty IsSourceGroupedProperty();
public static DependencyProperty IsSourceGroupedProperty { get; }
Public Static ReadOnly Property IsSourceGroupedProperty As DependencyProperty
Value
DependencyProperty DependencyProperty

The identifier for the IsSourceGrouped dependency property.

See Also

ItemsPath ItemsPath ItemsPath ItemsPath

Gets or sets the property path to follow from the top level item to find groups within the CollectionViewSource.

public : PropertyPath ItemsPath { get; set; }
PropertyPath ItemsPath(); void ItemsPath(PropertyPath itemspath);
public PropertyPath ItemsPath { get; set; }
Public ReadWrite Property ItemsPath As PropertyPath
<CollectionViewSource ItemsPath="propertyPathString" .../>
Value
PropertyPath PropertyPath

The property path to follow from the top level item to find groups. The default is a PropertyPath created from an empty string. This path implies that the object itself is the collection.

See Also

ItemsPathProperty ItemsPathProperty ItemsPathProperty ItemsPathProperty

Identifies the ItemsPath dependency property.

public : static DependencyProperty ItemsPathProperty { get; }
static DependencyProperty ItemsPathProperty();
public static DependencyProperty ItemsPathProperty { get; }
Public Static ReadOnly Property ItemsPathProperty As DependencyProperty
Value
DependencyProperty DependencyProperty

The identifier for the ItemsPath dependency property.

See Also

Source Source Source Source

Gets or sets the collection object from which to create this view.

public : Platform::Object Source { get; set; }
winrt::Windows::Foundation::IInspectable Source(); void Source(winrt::Windows::Foundation::IInspectable source);
public object Source { get; set; }
Public ReadWrite Property Source As object
<CollectionViewSource Source="bindingReference" .../>
Value
object object

The collection to create the view from.

Remarks

When you set this property, a view is generated automatically unless the source collection implements ICollectionViewFactory. Otherwise, the view is retrieved through the CreateView method. You can retrieve the view through the View property.

See Also

SourceProperty SourceProperty SourceProperty SourceProperty

Identifies the Source dependency property.

public : static DependencyProperty SourceProperty { get; }
static DependencyProperty SourceProperty();
public static DependencyProperty SourceProperty { get; }
Public Static ReadOnly Property SourceProperty As DependencyProperty
Value
DependencyProperty DependencyProperty

The identifier for the Source dependency property.

See Also

View View View View

Gets the view object that is currently associated with this instance of CollectionViewSource.

public : ICollectionView View { get; }
ICollectionView View();
public ICollectionView View { get; }
Public ReadOnly Property View As ICollectionView
Value
ICollectionView ICollectionView

The view object that is currently associated with this instance of CollectionViewSource.

Remarks

This property is initialized when you set the Source property. At that time, a view is generated automatically unless the source collection implements ICollectionViewFactory. Otherwise, the view is retrieved through the CreateView method.

See Also

ViewProperty ViewProperty ViewProperty ViewProperty

Identifies the View dependency property.

public : static DependencyProperty ViewProperty { get; }
static DependencyProperty ViewProperty();
public static DependencyProperty ViewProperty { get; }
Public Static ReadOnly Property ViewProperty As DependencyProperty
Value
DependencyProperty DependencyProperty

The identifier for the View dependency property.

See Also

Methods

ClearValue(DependencyProperty) ClearValue(DependencyProperty) ClearValue(DependencyProperty) ClearValue(DependencyProperty)

Clears the local value of a dependency property.

(Inherited from DependencyObject)

GetAnimationBaseValue(DependencyProperty) GetAnimationBaseValue(DependencyProperty) GetAnimationBaseValue(DependencyProperty) GetAnimationBaseValue(DependencyProperty)

Returns any base value established for a dependency property, which would apply in cases where an animation is not active.

(Inherited from DependencyObject)

GetValue(DependencyProperty) GetValue(DependencyProperty) GetValue(DependencyProperty) GetValue(DependencyProperty)

Returns the current effective value of a dependency property from a DependencyObject.

(Inherited from DependencyObject)

ReadLocalValue(DependencyProperty) ReadLocalValue(DependencyProperty) ReadLocalValue(DependencyProperty) ReadLocalValue(DependencyProperty)

Returns the local value of a dependency property, if a local value is set.

(Inherited from DependencyObject)

RegisterPropertyChangedCallback(DependencyProperty,DependencyPropertyChangedCallback) RegisterPropertyChangedCallback(DependencyProperty,DependencyPropertyChangedCallback) RegisterPropertyChangedCallback(DependencyProperty,DependencyPropertyChangedCallback) RegisterPropertyChangedCallback(DependencyProperty,DependencyPropertyChangedCallback)

Registers a notification function for listening to changes to a specific DependencyProperty on this DependencyObject instance.

(Inherited from DependencyObject)

SetValue(DependencyProperty,Object) SetValue(DependencyProperty,Object) SetValue(DependencyProperty,Object) SetValue(DependencyProperty,Object)

Sets the local value of a dependency property on a DependencyObject.

(Inherited from DependencyObject)

UnregisterPropertyChangedCallback(DependencyProperty,Int64) UnregisterPropertyChangedCallback(DependencyProperty,Int64) UnregisterPropertyChangedCallback(DependencyProperty,Int64) UnregisterPropertyChangedCallback(DependencyProperty,Int64)

Cancels a change notification that was previously registered by calling RegisterPropertyChangedCallback.

(Inherited from DependencyObject)

See Also