Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Framework / MS / Internal / Annotations / AnnotationResourceCollection.cs / 1 / AnnotationResourceCollection.cs
//----------------------------------------------------------------------------
//
//
// Copyright (C) 2003 by Microsoft Corporation. All rights reserved.
//
//
// Description: Subclass of AnnotationObservableCollection which has slightly different
// eventing behavior for ClearItems and SetItem methods. This class
// is used specifically for AnnotationResources.
//
// History:
// 03/10/2005 : [....] - created
//
//---------------------------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Collections.Specialized;
using System.ComponentModel;
using System.Diagnostics;
using System.Windows.Annotations;
using System.Windows.Data;
namespace MS.Internal.Annotations
{
///
/// Subclass of AnnotationObservableCollection which has slightly different
/// eventing behavior for ClearItems and SetItem methods. This class
/// is used specifically for AnnotationResources.
///
internal sealed class AnnotationResourceCollection : AnnotationObservableCollection
{
//-----------------------------------------------------
//
// Constructors
//
//-----------------------------------------------------
#region Constructors
///
/// Initializes a new instance of AnnotationResourceCollection that is empty and has default initial capacity.
///
public AnnotationResourceCollection() : base()
{
}
#endregion Constructors
//------------------------------------------------------
//
// Public Events
//
//-----------------------------------------------------
#region Public Events
///
/// Event fired when an item in the collection changes (fires a PropertyChanged event).
///
public event PropertyChangedEventHandler ItemChanged;
#endregion Public Events
//------------------------------------------------------
//
// Protected Methods
//
//------------------------------------------------------
#region Protected Methods
///
/// Override this method and provide a different set of events
/// when items are cleared from the collection. Specifically,
/// fire a Remove event for each item in the collection.
///
protected override void ProtectedClearItems()
{
// We want to fire for each item in the list
List list = new List(this);
Items.Clear(); // directly clear Collection inner Items collection
OnPropertyChanged(CountString);
OnPropertyChanged(IndexerName);
OnCollectionCleared(list);
}
///
/// Override this method and provide a different set of events
/// when an item is set on a given index in this collection.
/// Specifically, fire a both a Remove and Add event (as the
/// grand-parent class ObservableCollection does).
///
/// index of item to set
/// item to set at that index
protected override void ProtectedSetItem(int index, AnnotationResource item)
{
// Use the standard built in events (one for item removed and one for item added)
ObservableCollectionSetItem(index, item); // Calls raw ObservableCollection method
}
#endregion Protected Methods
//-----------------------------------------------------
//
// Private Methods
//
//------------------------------------------------------
#region Private Methods
// fire an event for each item removed from the collection
void OnCollectionCleared(IEnumerable list)
{
foreach(object item in list)
{
OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove, item, 0));
}
}
private void OnPropertyChanged(string propertyName)
{
OnPropertyChanged(new PropertyChangedEventArgs(propertyName));
}
// raise CollectionChanged event to any listeners
protected override void OnItemPropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (ItemChanged != null)
{
ItemChanged(sender, e);
}
}
#endregion Private Methods
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Int32Converter.cs
- Stack.cs
- Compilation.cs
- ScrollData.cs
- ProviderSettingsCollection.cs
- PropertyDescriptorComparer.cs
- WaitHandleCannotBeOpenedException.cs
- MetadataReference.cs
- Int32CollectionConverter.cs
- ColorTransformHelper.cs
- DuplexClientBase.cs
- DesignTableCollection.cs
- OracleInfoMessageEventArgs.cs
- DataObject.cs
- RC2CryptoServiceProvider.cs
- ObjectStateManagerMetadata.cs
- KeySpline.cs
- FontFamilyValueSerializer.cs
- InvalidComObjectException.cs
- FileSystemInfo.cs
- SystemSounds.cs
- VariantWrapper.cs
- Int32CollectionValueSerializer.cs
- IList.cs
- UnsafeNativeMethods.cs
- EditableRegion.cs
- Environment.cs
- ActivityExecutionFilter.cs
- DomNameTable.cs
- GridViewRowPresenter.cs
- LineSegment.cs
- FixUp.cs
- NamespaceCollection.cs
- DataContext.cs
- Button.cs
- XsltArgumentList.cs
- TextSchema.cs
- Selection.cs
- DomNameTable.cs
- CodeComment.cs
- DayRenderEvent.cs
- HwndMouseInputProvider.cs
- _BufferOffsetSize.cs
- BuildProviderCollection.cs
- HorizontalAlignConverter.cs
- FixedSOMPageElement.cs
- CompositeControl.cs
- BoundField.cs
- LoginCancelEventArgs.cs
- ProcessHost.cs
- XNodeSchemaApplier.cs
- IgnoreSection.cs
- SqlComparer.cs
- XmlElementList.cs
- MappingModelBuildProvider.cs
- HtmlInputFile.cs
- RIPEMD160.cs
- FrameworkPropertyMetadata.cs
- HashCodeCombiner.cs
- DateTimeFormatInfo.cs
- SqlInternalConnection.cs
- ContourSegment.cs
- DataTableReaderListener.cs
- RequestResizeEvent.cs
- WebPartTransformer.cs
- HtmlMeta.cs
- RegexFCD.cs
- BamlResourceDeserializer.cs
- Events.cs
- MethodSignatureGenerator.cs
- ClonableStack.cs
- OleDbCommand.cs
- Border.cs
- returneventsaver.cs
- Utils.cs
- ReliabilityContractAttribute.cs
- TypeReference.cs
- ValidationEventArgs.cs
- FloaterBaseParagraph.cs
- CacheHelper.cs
- StringArrayEditor.cs
- ReflectionTypeLoadException.cs
- FlowLayoutPanel.cs
- Gdiplus.cs
- X509UI.cs
- ByteStorage.cs
- HandleExceptionArgs.cs
- ExeConfigurationFileMap.cs
- PropertyGridEditorPart.cs
- OdbcConnectionFactory.cs
- HeaderedContentControl.cs
- SqlStatistics.cs
- SetterBaseCollection.cs
- HttpListenerException.cs
- _UriTypeConverter.cs
- PropertyFilterAttribute.cs
- CodeChecksumPragma.cs
- SqlDataSourceView.cs
- Link.cs
- ImageListStreamer.cs