Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / Data / CollectionViewGroup.cs / 1305600 / CollectionViewGroup.cs
//----------------------------------------------------------------------------
//
//
// Copyright (C) 2003 by Microsoft Corporation. All rights reserved.
//
//
//
// Description: A CollectionViewGroup, as created by a CollectionView according to a GroupDescription.
//
// See spec at http://avalon/connecteddata/Specs/Grouping.mht
//
//---------------------------------------------------------------------------
using System.Collections.ObjectModel;
using System.ComponentModel;
namespace System.Windows.Data
{
///
/// A CollectionViewGroup, as created by a CollectionView according to a GroupDescription.
///
abstract public class CollectionViewGroup : INotifyPropertyChanged
{
#region Constructors
//-----------------------------------------------------
//
// Constructors
//
//-----------------------------------------------------
///
/// Initializes a new instance of CollectionViewGroup.
///
protected CollectionViewGroup(object name)
{
_name = name;
_itemsRW = new ObservableCollection();
_itemsRO = new ReadOnlyObservableCollection(_itemsRW);
}
#endregion Constructors
#region Public Properties
//------------------------------------------------------
//
// Public Properties
//
//-----------------------------------------------------
///
/// The name of the group, i.e. the common value of the
/// property used to divide data items into groups.
///
public object Name
{
get { return _name; }
}
///
/// The immediate children of the group.
/// These may be data items (leaves) or subgroups.
///
public ReadOnlyObservableCollection Items
{
get { return _itemsRO; }
}
///
/// The number of data items (leaves) in the subtree under this group.
///
public int ItemCount
{
get { return _itemCount; }
}
///
/// Is this group at the bottom level (not further subgrouped).
///
public abstract bool IsBottomLevel
{
get;
}
#endregion Public Properties
#region INotifyPropertyChanged
///
/// PropertyChanged event (per ).
///
event PropertyChangedEventHandler INotifyPropertyChanged.PropertyChanged
{
add { PropertyChanged += value; }
remove { PropertyChanged -= value; }
}
///
/// PropertyChanged event (per ).
///
protected virtual event PropertyChangedEventHandler PropertyChanged;
///
/// Raises a PropertyChanged event (per ).
///
protected virtual void OnPropertyChanged(PropertyChangedEventArgs e)
{
if (PropertyChanged != null)
{
PropertyChanged(this, e);
}
}
#endregion INotifyPropertyChanged
#region Protected Properties
//------------------------------------------------------
//
// Protected Properties
//
//------------------------------------------------------
///
/// The items of the group.
/// Derived classes can add or remove items using this property;
/// the changes will be reflected in the public Items property.
///
protected ObservableCollection ProtectedItems
{
get { return _itemsRW; }
}
///
/// The number of data items (leaves) in the subtree under this group.
/// Derived classes can change the count using this property;
/// the changes will be reflected in the public ItemCount property.
///
protected int ProtectedItemCount
{
get { return _itemCount; }
set
{
_itemCount = value;
OnPropertyChanged(new PropertyChangedEventArgs("ItemCount"));
}
}
#endregion Protected Properties
#region Private Fields
//-----------------------------------------------------
//
// Private Fields
//
//------------------------------------------------------
object _name;
ObservableCollection _itemsRW;
ReadOnlyObservableCollection _itemsRO;
int _itemCount;
#endregion Private Fields
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
//----------------------------------------------------------------------------
//
//
// Copyright (C) 2003 by Microsoft Corporation. All rights reserved.
//
//
//
// Description: A CollectionViewGroup, as created by a CollectionView according to a GroupDescription.
//
// See spec at http://avalon/connecteddata/Specs/Grouping.mht
//
//---------------------------------------------------------------------------
using System.Collections.ObjectModel;
using System.ComponentModel;
namespace System.Windows.Data
{
///
/// A CollectionViewGroup, as created by a CollectionView according to a GroupDescription.
///
abstract public class CollectionViewGroup : INotifyPropertyChanged
{
#region Constructors
//-----------------------------------------------------
//
// Constructors
//
//-----------------------------------------------------
///
/// Initializes a new instance of CollectionViewGroup.
///
protected CollectionViewGroup(object name)
{
_name = name;
_itemsRW = new ObservableCollection();
_itemsRO = new ReadOnlyObservableCollection(_itemsRW);
}
#endregion Constructors
#region Public Properties
//------------------------------------------------------
//
// Public Properties
//
//-----------------------------------------------------
///
/// The name of the group, i.e. the common value of the
/// property used to divide data items into groups.
///
public object Name
{
get { return _name; }
}
///
/// The immediate children of the group.
/// These may be data items (leaves) or subgroups.
///
public ReadOnlyObservableCollection Items
{
get { return _itemsRO; }
}
///
/// The number of data items (leaves) in the subtree under this group.
///
public int ItemCount
{
get { return _itemCount; }
}
///
/// Is this group at the bottom level (not further subgrouped).
///
public abstract bool IsBottomLevel
{
get;
}
#endregion Public Properties
#region INotifyPropertyChanged
///
/// PropertyChanged event (per ).
///
event PropertyChangedEventHandler INotifyPropertyChanged.PropertyChanged
{
add { PropertyChanged += value; }
remove { PropertyChanged -= value; }
}
///
/// PropertyChanged event (per ).
///
protected virtual event PropertyChangedEventHandler PropertyChanged;
///
/// Raises a PropertyChanged event (per ).
///
protected virtual void OnPropertyChanged(PropertyChangedEventArgs e)
{
if (PropertyChanged != null)
{
PropertyChanged(this, e);
}
}
#endregion INotifyPropertyChanged
#region Protected Properties
//------------------------------------------------------
//
// Protected Properties
//
//------------------------------------------------------
///
/// The items of the group.
/// Derived classes can add or remove items using this property;
/// the changes will be reflected in the public Items property.
///
protected ObservableCollection ProtectedItems
{
get { return _itemsRW; }
}
///
/// The number of data items (leaves) in the subtree under this group.
/// Derived classes can change the count using this property;
/// the changes will be reflected in the public ItemCount property.
///
protected int ProtectedItemCount
{
get { return _itemCount; }
set
{
_itemCount = value;
OnPropertyChanged(new PropertyChangedEventArgs("ItemCount"));
}
}
#endregion Protected Properties
#region Private Fields
//-----------------------------------------------------
//
// Private Fields
//
//------------------------------------------------------
object _name;
ObservableCollection _itemsRW;
ReadOnlyObservableCollection _itemsRO;
int _itemCount;
#endregion Private Fields
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.