Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / wpf / src / Framework / System / Windows / Controls / VirtualizingPanel.cs / 1 / 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(true) { } ////// The generator associated with this panel. /// public IItemContainerGenerator ItemContainerGenerator { get { return Generator; } } ////// 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. //---------------------------------------------------------------------------- // // 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(true) { } ////// The generator associated with this panel. /// public IItemContainerGenerator ItemContainerGenerator { get { return Generator; } } ////// 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
- WebZone.cs
- MenuItemStyleCollectionEditor.cs
- DataGridViewMethods.cs
- PointAnimationClockResource.cs
- RuntimeHandles.cs
- SettingsPropertyCollection.cs
- Visitors.cs
- RuleValidation.cs
- PtsHelper.cs
- SmtpFailedRecipientsException.cs
- InternalCache.cs
- _NestedMultipleAsyncResult.cs
- WindowsSecurityTokenAuthenticator.cs
- FunctionDescription.cs
- XmlBinaryReader.cs
- HyperlinkAutomationPeer.cs
- KnownTypes.cs
- DoubleAnimationClockResource.cs
- DataGridViewDataErrorEventArgs.cs
- Section.cs
- ReaderWriterLockWrapper.cs
- TPLETWProvider.cs
- ArrayExtension.cs
- ListItemParagraph.cs
- PassportAuthenticationEventArgs.cs
- X509SecurityTokenAuthenticator.cs
- ColumnPropertiesGroup.cs
- BypassElementCollection.cs
- DispatcherExceptionFilterEventArgs.cs
- UTF8Encoding.cs
- Int16.cs
- ColumnResult.cs
- CollectionCodeDomSerializer.cs
- validationstate.cs
- StackSpiller.cs
- HybridDictionary.cs
- HttpClientCredentialType.cs
- FontStyles.cs
- MyContact.cs
- ConfigurationSectionGroup.cs
- PageAsyncTaskManager.cs
- VisualBrush.cs
- ResolveMatchesMessageCD1.cs
- CharacterString.cs
- SqlDataRecord.cs
- XmlSerializerAssemblyAttribute.cs
- GestureRecognizer.cs
- DocumentViewerHelper.cs
- SimpleMailWebEventProvider.cs
- MimeWriter.cs
- ILGenerator.cs
- StringDictionary.cs
- ClientData.cs
- SerializationObjectManager.cs
- HtmlEmptyTagControlBuilder.cs
- FixedTextSelectionProcessor.cs
- ResourcesBuildProvider.cs
- RequestUriProcessor.cs
- PieceDirectory.cs
- WebBodyFormatMessageProperty.cs
- TTSVoice.cs
- InputElement.cs
- HtmlTitle.cs
- ImpersonationContext.cs
- CodeRemoveEventStatement.cs
- mactripleDES.cs
- OneWayBindingElementImporter.cs
- SatelliteContractVersionAttribute.cs
- KeyValuePairs.cs
- SystemInformation.cs
- CompoundFileIOPermission.cs
- WebPartsPersonalizationAuthorization.cs
- SQLByteStorage.cs
- PropertyValueChangedEvent.cs
- GridViewRowPresenterBase.cs
- GenericsInstances.cs
- IIS7ConfigurationLoader.cs
- NativeMethods.cs
- SqlUserDefinedTypeAttribute.cs
- HMACSHA384.cs
- SignedInfo.cs
- SqlSelectStatement.cs
- TextEndOfLine.cs
- XmlNamedNodeMap.cs
- EdmConstants.cs
- TypeDescriptionProviderAttribute.cs
- LineGeometry.cs
- PointIndependentAnimationStorage.cs
- PerfCounters.cs
- Lasso.cs
- RuntimeHandles.cs
- RegisteredArrayDeclaration.cs
- CustomDictionarySources.cs
- XmlSchemaComplexContent.cs
- SourceElementsCollection.cs
- DispatcherOperation.cs
- HttpRequest.cs
- PropertyGridView.cs
- AnimationStorage.cs
- TemplateBindingExtension.cs