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
- KnownTypeAttribute.cs
- Stream.cs
- WindowsNonControl.cs
- BinaryObjectInfo.cs
- DataGridToolTip.cs
- StringKeyFrameCollection.cs
- CheckoutException.cs
- DelegateHelpers.Generated.cs
- PathSegment.cs
- MemberAccessException.cs
- StandardOleMarshalObject.cs
- SubtreeProcessor.cs
- NativeMethods.cs
- DecoderReplacementFallback.cs
- Avt.cs
- TCEAdapterGenerator.cs
- DataBoundControl.cs
- PolicyStatement.cs
- SafeEventLogWriteHandle.cs
- ValidatingPropertiesEventArgs.cs
- UrlPropertyAttribute.cs
- VirtualDirectoryMapping.cs
- RangeValuePattern.cs
- VBIdentifierNameEditor.cs
- DesignParameter.cs
- UnsafeNativeMethods.cs
- UserPrincipalNameElement.cs
- UshortList2.cs
- BaseCodePageEncoding.cs
- Classification.cs
- GeneralTransform3DCollection.cs
- VirtualPath.cs
- MethodToken.cs
- TrustLevelCollection.cs
- AnonymousIdentificationSection.cs
- XmlDownloadManager.cs
- NativeBuffer.cs
- ToolBarPanel.cs
- TwoPhaseCommit.cs
- StylusEventArgs.cs
- ReadOnlyTernaryTree.cs
- ReturnEventArgs.cs
- XmlCharCheckingReader.cs
- PageClientProxyGenerator.cs
- querybuilder.cs
- Enum.cs
- ReadOnlyDataSource.cs
- SoapElementAttribute.cs
- StringFunctions.cs
- XmlSchemaFacet.cs
- DataColumn.cs
- HttpRequestCacheValidator.cs
- ParserOptions.cs
- BufferModeSettings.cs
- TriggerCollection.cs
- GACMembershipCondition.cs
- BuildProvider.cs
- PackageDigitalSignature.cs
- HideDisabledControlAdapter.cs
- RemotingSurrogateSelector.cs
- PersistenceTypeAttribute.cs
- EmbossBitmapEffect.cs
- handlecollector.cs
- ToolStripItemTextRenderEventArgs.cs
- UInt32.cs
- ClientConfigurationHost.cs
- TextEncodedRawTextWriter.cs
- TextTreeInsertElementUndoUnit.cs
- NativeCppClassAttribute.cs
- NavigationPropertyEmitter.cs
- StylusSystemGestureEventArgs.cs
- StringAnimationUsingKeyFrames.cs
- TextSelectionHelper.cs
- RangeExpression.cs
- DbProviderFactoriesConfigurationHandler.cs
- RemotingAttributes.cs
- SoapIncludeAttribute.cs
- ConversionHelper.cs
- Utilities.cs
- Tokenizer.cs
- DefaultBinder.cs
- DesignerLinkAdapter.cs
- LocatorPart.cs
- RowBinding.cs
- PackWebRequest.cs
- ValueType.cs
- BrushProxy.cs
- FillRuleValidation.cs
- FlowDocumentPaginator.cs
- EnumValAlphaComparer.cs
- SynchronizedPool.cs
- LazyInitializer.cs
- HMACSHA1.cs
- Substitution.cs
- TreeNodeStyle.cs
- AutomationPeer.cs
- ProviderConnectionPoint.cs
- SystemResourceHost.cs
- PeerApplicationLaunchInfo.cs
- Root.cs