Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Framework / MS / Internal / Data / CollectionViewGroupRoot.cs / 1 / CollectionViewGroupRoot.cs
//----------------------------------------------------------------------------
//
//
// Copyright (C) 2003 by Microsoft Corporation. All rights reserved.
//
//
//
// Description: Root of CollectionViewGroup structure, as created by a CollectionView according to a GroupDescription.
// CollectionView classes use this class to manage all Grouping functionality.
//
// See spec at [....]/connecteddata/Specs/Grouping.mht
//
//---------------------------------------------------------------------------
using System;
using System.Collections; // IComparer
using System.Collections.ObjectModel; // ObservableCollection
using System.Collections.Specialized; // INotifyCollectionChanged
using System.ComponentModel; // PropertyChangedEventArgs, GroupDescription
using System.Globalization;
using System.Windows.Data; // CollectionViewGroup
namespace MS.Internal.Data
{
// CollectionView classes use this class as the manager of all Grouping functionality
internal class CollectionViewGroupRoot : CollectionViewGroupInternal, INotifyCollectionChanged
{
internal CollectionViewGroupRoot(CollectionView view) : base("Root", null)
{
_view = view;
}
#region INotifyCollectionChanged
///
/// Raise this event when the (grouped) view changes
///
public event NotifyCollectionChangedEventHandler CollectionChanged;
///
/// Notify listeners that this View has changed
///
///
/// CollectionViews (and sub-classes) should take their filter/sort/grouping
/// into account before calling this method to forward CollectionChanged events.
///
///
/// The NotifyCollectionChangedEventArgs to be passed to the EventHandler
///
public void OnCollectionChanged(NotifyCollectionChangedEventArgs args)
{
if (args == null)
throw new ArgumentNullException("args");
if (CollectionChanged != null)
CollectionChanged(this, args);
}
#endregion INotifyCollectionChanged
///
/// The description of grouping, indexed by level.
///
public virtual ObservableCollection GroupDescriptions
{
get { return _groupBy; }
}
///
/// A delegate to select the group description as a function of the
/// parent group and its level.
///
public virtual GroupDescriptionSelectorCallback GroupBySelector
{
get { return _groupBySelector; }
set { _groupBySelector = value; }
}
// a group description has changed somewhere in the tree - notify host
protected override void OnGroupByChanged()
{
if (GroupDescriptionChanged != null)
GroupDescriptionChanged(this, EventArgs.Empty);
}
#region Internal Events and Properties
internal event EventHandler GroupDescriptionChanged;
internal IComparer ActiveComparer
{
get { return _comparer; }
set { _comparer = value; }
}
///
/// Culture to use during sorting.
///
internal CultureInfo Culture
{
get { return _view.Culture; }
}
internal bool IsDataInGroupOrder
{
get { return _isDataInGroupOrder; }
set { _isDataInGroupOrder = value; }
}
#endregion Internal Events and Properties
#region Internal Methods
internal void Initialize()
{
if (_topLevelGroupDescription == null)
{
_topLevelGroupDescription = new TopLevelGroupDescription();
}
InitializeGroup(this, _topLevelGroupDescription, 0);
}
internal void AddToSubgroups(object item, bool loading)
{
AddToSubgroups(item, this, 0, loading);
}
internal bool RemoveFromSubgroups(object item)
{
return RemoveFromSubgroups(item, this, 0);
}
internal void RemoveItemFromSubgroupsByExhaustiveSearch(object item)
{
RemoveItemFromSubgroupsByExhaustiveSearch(this, item);
}
#endregion Internal Methods
#region private methods
// Initialize the given group
void InitializeGroup(CollectionViewGroupInternal group, GroupDescription parentDescription, int level)
{
// set the group description for dividing the group into subgroups
GroupDescription groupDescription = GetGroupDescription(group, parentDescription, level);
group.GroupBy = groupDescription;
// create subgroups for each of the explicit names
ObservableCollection
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- UIElementIsland.cs
- LinkClickEvent.cs
- UserControlCodeDomTreeGenerator.cs
- CodeObjectCreateExpression.cs
- XPathSelectionIterator.cs
- CodeSnippetCompileUnit.cs
- AuthenticationService.cs
- NumberAction.cs
- WebPartTransformerCollection.cs
- ParenExpr.cs
- FastEncoderStatics.cs
- ConnectionStringsSection.cs
- SimpleParser.cs
- WebZone.cs
- DuplicateWaitObjectException.cs
- SqlDataSourceStatusEventArgs.cs
- Transform3D.cs
- TextTreeRootNode.cs
- Form.cs
- MailBnfHelper.cs
- DirectoryInfo.cs
- ColumnClickEvent.cs
- BoundField.cs
- ProfileInfo.cs
- NativeMethods.cs
- SmtpFailedRecipientsException.cs
- CompiledIdentityConstraint.cs
- nulltextnavigator.cs
- ChtmlLinkAdapter.cs
- XmlResolver.cs
- _emptywebproxy.cs
- ServicePoint.cs
- StrokeCollection2.cs
- RankException.cs
- CriticalExceptions.cs
- Attachment.cs
- SQlBooleanStorage.cs
- SchemaNamespaceManager.cs
- UnsafeNativeMethodsTablet.cs
- WebBrowser.cs
- CodeAssignStatement.cs
- returneventsaver.cs
- AbsoluteQuery.cs
- PromptStyle.cs
- MdiWindowListStrip.cs
- XhtmlBasicControlAdapter.cs
- ListViewContainer.cs
- DataGridViewAddColumnDialog.cs
- MsmqIntegrationChannelFactory.cs
- PolicyVersionConverter.cs
- XmlSerializerFactory.cs
- SafeNativeMethods.cs
- EmptyReadOnlyDictionaryInternal.cs
- CustomTypeDescriptor.cs
- FrameworkElementAutomationPeer.cs
- AppDomainAttributes.cs
- ContainsRowNumberChecker.cs
- QueryCursorEventArgs.cs
- IncomingWebResponseContext.cs
- ObjectDataSourceStatusEventArgs.cs
- Stream.cs
- _ListenerAsyncResult.cs
- CqlGenerator.cs
- ASCIIEncoding.cs
- MatrixUtil.cs
- CompilerCollection.cs
- ConnectionManagementElement.cs
- InertiaRotationBehavior.cs
- Size.cs
- WhitespaceSignificantCollectionAttribute.cs
- SparseMemoryStream.cs
- XmlElementAttribute.cs
- CacheMemory.cs
- ObjectPropertyMapping.cs
- ExpressionTextBox.xaml.cs
- DSASignatureDeformatter.cs
- EventEntry.cs
- ListMarkerSourceInfo.cs
- GenericTypeParameterBuilder.cs
- HeaderElement.cs
- PatternMatcher.cs
- EncryptedPackage.cs
- PhysicalFontFamily.cs
- DbMetaDataCollectionNames.cs
- TreeViewDataItemAutomationPeer.cs
- _AcceptOverlappedAsyncResult.cs
- AttributeConverter.cs
- SafeThreadHandle.cs
- SqlException.cs
- DataTablePropertyDescriptor.cs
- DataGridCellsPanel.cs
- Calendar.cs
- XPathNode.cs
- TabControlAutomationPeer.cs
- DeferredReference.cs
- XmlSequenceWriter.cs
- ProtectedUri.cs
- FigureParaClient.cs
- UserNameSecurityTokenAuthenticator.cs
- DataGridViewRowPrePaintEventArgs.cs