Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / Controls / VirtualizingPanel.cs / 1305600 / VirtualizingPanel.cs
//---------------------------------------------------------------------------- // // Copyright (C) Microsoft Corporation. All rights reserved. // //--------------------------------------------------------------------------- using MS.Internal; using MS.Utility; using System; using System.Collections; using System.Collections.Generic; using System.Collections.Specialized; using System.ComponentModel; using System.Windows.Media; using System.Windows.Controls.Primitives; // IItemContainerGenerator namespace System.Windows.Controls { ////// A base class that provides access to information that is useful for panels that with to implement virtualization. /// public abstract class VirtualizingPanel : Panel { ////// The default constructor. /// protected VirtualizingPanel() : base() { } ////// The generator associated with this panel. /// public IItemContainerGenerator ItemContainerGenerator { get { return Generator; } } internal override void GenerateChildren() { // Do nothing. Subclasses will use the exposed generator to generate children. } ////// Adds a child to the InternalChildren collection. /// This method is meant to be used when a virtualizing panel /// generates a new child. This method circumvents some validation /// that occurs in UIElementCollection.Add. /// /// Child to add. protected void AddInternalChild(UIElement child) { AddInternalChild(InternalChildren, child); } ////// Inserts a child into the InternalChildren collection. /// This method is meant to be used when a virtualizing panel /// generates a new child. This method circumvents some validation /// that occurs in UIElementCollection.Insert. /// /// The index at which to insert the child. /// Child to insert. protected void InsertInternalChild(int index, UIElement child) { InsertInternalChild(InternalChildren, index, child); } ////// Removes a child from the InternalChildren collection. /// This method is meant to be used when a virtualizing panel /// re-virtualizes a new child. This method circumvents some validation /// that occurs in UIElementCollection.RemoveRange. /// /// /// protected void RemoveInternalChildRange(int index, int range) { RemoveInternalChildRange(InternalChildren, index, range); } // This is internal as an optimization for VirtualizingStackPanel (so it doesn't need to re-query InternalChildren repeatedly) internal static void AddInternalChild(UIElementCollection children, UIElement child) { children.AddInternal(child); } // This is internal as an optimization for VirtualizingStackPanel (so it doesn't need to re-query InternalChildren repeatedly) internal static void InsertInternalChild(UIElementCollection children, int index, UIElement child) { children.InsertInternal(index, child); } // This is internal as an optimization for VirtualizingStackPanel (so it doesn't need to re-query InternalChildren repeatedly) internal static void RemoveInternalChildRange(UIElementCollection children, int index, int range) { children.RemoveRangeInternal(index, range); } ////// Called when the Items collection associated with the containing ItemsControl changes. /// /// sender /// Event arguments protected virtual void OnItemsChanged(object sender, ItemsChangedEventArgs args) { } ////// Called when the UI collection of children is cleared by the base Panel class. /// protected virtual void OnClearChildren() { } ////// Generates the item at the specified index and calls BringIntoView on it. /// /// Specify the item index that should become visible protected internal virtual void BringIndexIntoView(int index) { } internal override void OnItemsChangedInternal(object sender, ItemsChangedEventArgs args) { switch (args.Action) { case NotifyCollectionChangedAction.Add: case NotifyCollectionChangedAction.Remove: case NotifyCollectionChangedAction.Replace: case NotifyCollectionChangedAction.Move: // Don't allow Panel's code to run for add/remove/replace/move break; default: base.OnItemsChangedInternal(sender, args); break; } OnItemsChanged(sender, args); } internal override void OnClearChildrenInternal() { OnClearChildren(); } } } // 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
- DesignerValidatorAdapter.cs
- DelegatingTypeDescriptionProvider.cs
- XslCompiledTransform.cs
- ObjectViewFactory.cs
- Ipv6Element.cs
- ByeOperationCD1AsyncResult.cs
- SQLCharsStorage.cs
- StorageMappingItemCollection.cs
- Region.cs
- MetadataFile.cs
- XmlDocumentFragment.cs
- CollaborationHelperFunctions.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- MainMenu.cs
- PersonalizationState.cs
- ProjectionQueryOptionExpression.cs
- DataServiceContext.cs
- JsonReaderDelegator.cs
- CheckBoxField.cs
- RoleManagerModule.cs
- StatusBarDrawItemEvent.cs
- SpecialNameAttribute.cs
- ExpressionVisitorHelpers.cs
- XmlSignatureProperties.cs
- Polygon.cs
- CellCreator.cs
- MatrixAnimationBase.cs
- FixedSOMContainer.cs
- ProviderCollection.cs
- FrameworkContentElement.cs
- SerTrace.cs
- InstanceOwner.cs
- SpanIndex.cs
- XmlRootAttribute.cs
- AutomationPropertyInfo.cs
- MessageQueue.cs
- ValidationEventArgs.cs
- GrabHandleGlyph.cs
- SequenceDesigner.cs
- QueryContext.cs
- SpecialTypeDataContract.cs
- SectionVisual.cs
- FormViewDeletedEventArgs.cs
- XmlIgnoreAttribute.cs
- TabRenderer.cs
- GPRECTF.cs
- EditorZone.cs
- SqlNotificationEventArgs.cs
- XmlException.cs
- SqlNodeAnnotations.cs
- ReliabilityContractAttribute.cs
- BaseComponentEditor.cs
- DataColumnChangeEvent.cs
- Rotation3DAnimationBase.cs
- EntityDataSourceDesigner.cs
- InputLanguageProfileNotifySink.cs
- UserValidatedEventArgs.cs
- FileReader.cs
- SqlDataSourceCustomCommandPanel.cs
- ImageDrawing.cs
- TailPinnedEventArgs.cs
- ProtocolElement.cs
- SharedStatics.cs
- Int32Rect.cs
- ExpressionEvaluator.cs
- TargetPerspective.cs
- InfoCardPolicy.cs
- WmlListAdapter.cs
- OutOfProcStateClientManager.cs
- WebPartConnectionsDisconnectVerb.cs
- BitmapCodecInfoInternal.cs
- PropertyTabChangedEvent.cs
- SmiConnection.cs
- ToolStripTemplateNode.cs
- SendMailErrorEventArgs.cs
- BindingExpressionBase.cs
- ListViewItemMouseHoverEvent.cs
- GridViewSelectEventArgs.cs
- _NativeSSPI.cs
- webbrowsersite.cs
- GlyphRunDrawing.cs
- Win32.cs
- NumberSubstitution.cs
- Task.cs
- BindableTemplateBuilder.cs
- TextEmbeddedObject.cs
- GroupQuery.cs
- ChildrenQuery.cs
- RightsDocument.cs
- MenuEventArgs.cs
- ServiceHttpHandlerFactory.cs
- httpserverutility.cs
- DataTemplateSelector.cs
- RegistryKey.cs
- DataServiceBuildProvider.cs
- XsdValidatingReader.cs
- SelectionEditor.cs
- ToolStripPanelRow.cs
- CodeVariableReferenceExpression.cs
- SecureUICommand.cs