Code:
/ 4.0 / 4.0 / 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. //---------------------------------------------------------------------------- // // 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
- BaseCAMarshaler.cs
- MappedMetaModel.cs
- ValidationSummary.cs
- PagedControl.cs
- ScriptControl.cs
- HttpContext.cs
- DataListItem.cs
- DesignerActionKeyboardBehavior.cs
- KeyInstance.cs
- GraphicsContainer.cs
- Effect.cs
- JavaScriptSerializer.cs
- SystemColorTracker.cs
- ConfigurationManager.cs
- AggregatePushdown.cs
- LineServicesRun.cs
- ListBindingHelper.cs
- ScriptingJsonSerializationSection.cs
- _BaseOverlappedAsyncResult.cs
- ComponentResourceManager.cs
- DbParameterHelper.cs
- TimeoutValidationAttribute.cs
- DrawListViewItemEventArgs.cs
- MarkupExtensionParser.cs
- EndCreateSecurityTokenRequest.cs
- WindowsToolbarAsMenu.cs
- ZipIOLocalFileHeader.cs
- ErrorInfoXmlDocument.cs
- TextServicesLoader.cs
- Normalization.cs
- CqlBlock.cs
- TypeLibConverter.cs
- HebrewNumber.cs
- ProxyAttribute.cs
- CleanUpVirtualizedItemEventArgs.cs
- WindowsListViewItemCheckBox.cs
- EraserBehavior.cs
- ISAPIApplicationHost.cs
- ValidationResult.cs
- CommonXSendMessage.cs
- ArglessEventHandlerProxy.cs
- ConfigurationStrings.cs
- ThemeDictionaryExtension.cs
- MenuBase.cs
- MessageDecoder.cs
- TabItemAutomationPeer.cs
- ObjectDisposedException.cs
- PerformanceCountersElement.cs
- Constraint.cs
- MasterPageParser.cs
- EmbossBitmapEffect.cs
- ListenUriMode.cs
- Tracking.cs
- wmiprovider.cs
- FormattedTextSymbols.cs
- FormatException.cs
- SevenBitStream.cs
- AppDomainProtocolHandler.cs
- MetaModel.cs
- SessionStateItemCollection.cs
- XmlSerializerVersionAttribute.cs
- SymLanguageType.cs
- WmlControlAdapter.cs
- XmlTypeMapping.cs
- EncryptedXml.cs
- CheckBoxBaseAdapter.cs
- XmlSchemaSimpleType.cs
- AssertSection.cs
- MaskedTextProvider.cs
- ExpressionWriter.cs
- OutKeywords.cs
- ReaderOutput.cs
- InstancePersistenceEvent.cs
- Properties.cs
- Aes.cs
- CompensatableTransactionScopeActivity.cs
- PackagingUtilities.cs
- CDSCollectionETWBCLProvider.cs
- UnSafeCharBuffer.cs
- WindowsEditBox.cs
- FileDocument.cs
- ActivationArguments.cs
- Triangle.cs
- TTSEngineTypes.cs
- DirectionalLight.cs
- XmlIgnoreAttribute.cs
- DateTimeUtil.cs
- ZipIOLocalFileDataDescriptor.cs
- HeaderCollection.cs
- BuildProvidersCompiler.cs
- BamlTreeUpdater.cs
- MouseGestureConverter.cs
- LicenseContext.cs
- Logging.cs
- COM2ComponentEditor.cs
- DbConnectionPoolOptions.cs
- SafeFileHandle.cs
- PropertyBuilder.cs
- ToolStripInSituService.cs
- FamilyCollection.cs