Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / wpf / src / 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 : rruiz - 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.
//----------------------------------------------------------------------------
//
//
// 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 : rruiz - 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
- ZoneButton.cs
- ObjRef.cs
- DiscoveryDocumentSerializer.cs
- BitStream.cs
- WebServiceErrorEvent.cs
- DateRangeEvent.cs
- OleTxTransaction.cs
- BindingContext.cs
- MethodBuilder.cs
- CatalogPart.cs
- ProxyWebPartManagerDesigner.cs
- XamlTemplateSerializer.cs
- CodeExporter.cs
- ObjectDataSourceMethodEventArgs.cs
- BitStream.cs
- LinkedList.cs
- VisualBasicValue.cs
- ImageSource.cs
- TimeSpanValidator.cs
- CodeTypeDeclaration.cs
- Token.cs
- FormsAuthenticationModule.cs
- XmlParserContext.cs
- IndexOutOfRangeException.cs
- DataGridPagerStyle.cs
- XmlDeclaration.cs
- DynamicRenderer.cs
- EventToken.cs
- EventDrivenDesigner.cs
- SystemThemeKey.cs
- UnknownBitmapEncoder.cs
- WindowsHyperlink.cs
- ClosableStream.cs
- NetworkCredential.cs
- SafeHandles.cs
- AttachedPropertyBrowsableWhenAttributePresentAttribute.cs
- DesignerAttributeInfo.cs
- ProgressPage.cs
- DynamicArgumentDialog.cs
- SqlDataSourceConfigureFilterForm.cs
- SafeProcessHandle.cs
- TypeInitializationException.cs
- mda.cs
- ReadOnlyDictionary.cs
- ToolStripDropDownClosedEventArgs.cs
- TypeConverterHelper.cs
- SectionInput.cs
- PieceDirectory.cs
- DataGridViewRowPrePaintEventArgs.cs
- ButtonPopupAdapter.cs
- DLinqTableProvider.cs
- BufferAllocator.cs
- Directory.cs
- ServiceNotStartedException.cs
- TextElementEditingBehaviorAttribute.cs
- MetadataItemEmitter.cs
- LoginViewDesigner.cs
- TextLine.cs
- AssemblyAttributes.cs
- xmlformatgeneratorstatics.cs
- SynchronousChannelMergeEnumerator.cs
- CellParaClient.cs
- WebPartConnection.cs
- PLINQETWProvider.cs
- Window.cs
- RelationshipConverter.cs
- SmiContext.cs
- TabletDeviceInfo.cs
- ServiceDeploymentInfo.cs
- XmlStreamStore.cs
- XmlNodeComparer.cs
- DNS.cs
- HttpResponseInternalWrapper.cs
- Renderer.cs
- FixedHighlight.cs
- Monitor.cs
- KeyNotFoundException.cs
- ListSortDescription.cs
- SqlDataAdapter.cs
- ContextMenuService.cs
- ConsoleKeyInfo.cs
- LoadMessageLogger.cs
- TypeUsageBuilder.cs
- ClientBuildManager.cs
- CombinedGeometry.cs
- PageHandlerFactory.cs
- CardSpaceException.cs
- ButtonBaseDesigner.cs
- SqlMethodTransformer.cs
- ConditionalBranch.cs
- TextSpan.cs
- RelatedCurrencyManager.cs
- ContractHandle.cs
- PersistenceParticipant.cs
- GridViewEditEventArgs.cs
- TypedServiceChannelBuilder.cs
- nulltextcontainer.cs
- InkCanvas.cs
- Point.cs
- DynamicMethod.cs