1 out of 1 rated this helpful - Rate this topic

CompositeCollection Class

Enables multiple collections and items to be displayed as a single list.

System.Object
  System.Windows.Data.CompositeCollection

Namespace:  System.Windows.Data
Assembly:  PresentationFramework (in PresentationFramework.dll)
XMLNS for XAML: http://schemas.microsoft.com/winfx/2006/xaml/presentation, http://schemas.microsoft.com/netfx/2007/xaml/presentation
[LocalizabilityAttribute(LocalizationCategory.Ignore)]
public class CompositeCollection : IList, 
	ICollection, IEnumerable, INotifyCollectionChanged, ICollectionViewFactory, IWeakEventListener
<CompositeCollection .../>

The CompositeCollection type exposes the following members.

  Name Description
Public method CompositeCollection() Creates a new instance of the CompositeCollection class that is empty and has default initial capacity.
Public method CompositeCollection(Int32) Creates a new instance of the CompositeCollection class that is empty and has a specified initial capacity.
Top
  Name Description
Public property Count Gets the number of items stored in this collection.
Public property Item Indexer property that retrieves or replaces the item at the given zero-based offset in the collection.
Top
  Name Description
Public method Add Adds the specified item to this collection.
Public method Clear Clears the collection.
Public method Contains Checks to see if a given item is in this collection.
Public method CopyTo Makes a shallow copy of object references from this collection to the given array.
Public method Equals(Object) Determines whether the specified Object is equal to the current Object. (Inherited from Object.)
Protected method Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.)
Public method GetHashCode Serves as a hash function for a particular type. (Inherited from Object.)
Public method GetType Gets the Type of the current instance. (Inherited from Object.)
Public method IndexOf Returns the index in this collection where the given item is found.
Public method Insert Inserts an item in the collection at a given index. All items after the given position are moved down by one.
Protected method MemberwiseClone Creates a shallow copy of the current Object. (Inherited from Object.)
Protected method ReceiveWeakEvent Handles events from the centralized event table.
Public method Remove Removes the given item reference from the collection. All remaining items move up by one.
Public method RemoveAt Removes an item from the collection at the given index. All remaining items move up by one.
Public method ToString Returns a string that represents the current object. (Inherited from Object.)
Top
  Name Description
Protected event CollectionChanged Occurs when the collection changes, either by adding or removing an item.
Top
  Name Description
Public Extension Method AsParallel Enables parallelization of a query. (Defined by ParallelEnumerable.)
Public Extension Method AsQueryable Converts an IEnumerable to an IQueryable. (Defined by Queryable.)
Public Extension Method Cast<TResult> Converts the elements of an IEnumerable to the specified type. (Defined by Enumerable.)
Public Extension Method OfType<TResult> Filters the elements of an IEnumerable based on a specified type. (Defined by Enumerable.)
Top
  Name Description
Explicit interface implemetation Private property ICollection.IsSynchronized This member supports the Windows Presentation Foundation (WPF) infrastructure and is not intended to be used directly from your code.
Explicit interface implemetation Private property ICollection.SyncRoot This member supports the Windows Presentation Foundation (WPF) infrastructure and is not intended to be used directly from your code.
Explicit interface implemetation Private method ICollectionViewFactory.CreateView This member supports the Windows Presentation Foundation (WPF) infrastructure and is not intended to be used directly from your code.
Explicit interface implemetation Private method IEnumerable.GetEnumerator Returns an enumerator.
Explicit interface implemetation Private property IList.IsFixedSize This member supports the Windows Presentation Foundation (WPF) infrastructure and is not intended to be used directly from your code.
Explicit interface implemetation Private property IList.IsReadOnly This member supports the Windows Presentation Foundation (WPF) infrastructure and is not intended to be used directly from your code.
Explicit interface implemetation Private event INotifyCollectionChanged.CollectionChanged Occurs when the collection has changed.
Explicit interface implemetation Private method IWeakEventListener.ReceiveWeakEvent This member supports the Windows Presentation Foundation (WPF) infrastructure and is not intended to be used directly from your code.
Top

CompositeCollection can contain items such as strings, objects, XML nodes, elements, as well as other collections. An ItemsControl uses the data in the CompositeCollection to generate its content according to its ItemTemplate. For more information about using ItemsControl objects to bind to collections, see the Binding to Collections section of the Data Binding Overview.

The following example shows how to display multiple collections and items as one list using the CompositeCollection class. In this example, GreekGods is an ObservableCollection<T> of GreekGod custom objects. Data templates are defined so that GreekGod objects and GreekHero objects appear with a gold and a cyan foreground color respectively.


<Window Background="Cornsilk"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:c="clr-namespace:SDKSample"
  x:Class="SDKSample.Window1"
  Title="CompositeCollections"
  SizeToContent="WidthAndHeight"
  >
  <Window.Resources>
    <c:GreekGods x:Key="GreekGodsData"/>

    <XmlDataProvider x:Key="GreekHeroesData" XPath="GreekHeroes/Hero">
      <x:XData>
      <GreekHeroes xmlns="">
        <Hero Name="Jason" />
        <Hero Name="Hercules" />
        <Hero Name="Bellerophon" />
        <Hero Name="Theseus" />
        <Hero Name="Odysseus" />
        <Hero Name="Perseus" />
      </GreekHeroes>
      </x:XData>
    </XmlDataProvider>

    <DataTemplate DataType="{x:Type c:GreekGod}">
      <TextBlock Text="{Binding Path=Name}" Foreground="Gold"/>
    </DataTemplate>
    <DataTemplate DataType="Hero">
      <TextBlock Text="{Binding XPath=@Name}" Foreground="Cyan"/>
    </DataTemplate>
	</Window.Resources>
	
  <StackPanel>
    <TextBlock FontSize="18" FontWeight="Bold" Margin="10"
      HorizontalAlignment="Center">Composite Collections Sample</TextBlock>
    <ListBox Name="myListBox" Height="300" Width="200" Background="White">
      <ListBox.ItemsSource>
        <CompositeCollection>
          <CollectionContainer
            Collection="{Binding Source={StaticResource GreekGodsData}}" />
          <CollectionContainer
            Collection="{Binding Source={StaticResource GreekHeroesData}}" />
          <ListBoxItem Foreground="Red">Other Listbox Item 1</ListBoxItem>
          <ListBoxItem Foreground="Red">Other Listbox Item 2</ListBoxItem>
        </CompositeCollection>
      </ListBox.ItemsSource>
    </ListBox>
  </StackPanel>

</Window>


.NET Framework

Supported in: 4, 3.5, 3.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Did you find this helpful?
(1500 characters remaining)
Community Content Add
Annotations FAQ