Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- DataGridViewCellStateChangedEventArgs.cs
- filewebrequest.cs
- ProtectedConfiguration.cs
- DecoderNLS.cs
- wmiutil.cs
- WsdlHelpGeneratorElement.cs
- UndoEngine.cs
- XamlRtfConverter.cs
- TypeUtil.cs
- BitStack.cs
- _emptywebproxy.cs
- CheckBoxBaseAdapter.cs
- DocumentPageTextView.cs
- RenderDataDrawingContext.cs
- BroadcastEventHelper.cs
- ProfileModule.cs
- MediaElement.cs
- TextRunTypographyProperties.cs
- SqlServer2KCompatibilityAnnotation.cs
- XmlNavigatorStack.cs
- RegistrationProxy.cs
- SqlNode.cs
- PageRequestManager.cs
- _CacheStreams.cs
- odbcmetadatafactory.cs
- DataKey.cs
- ProtocolsConfigurationHandler.cs
- ResourceDisplayNameAttribute.cs
- AssemblyCollection.cs
- CryptoConfig.cs
- ImageCodecInfoPrivate.cs
- ColorBlend.cs
- FileEnumerator.cs
- DetailsViewRow.cs
- OdbcCommand.cs
- PropertyTabChangedEvent.cs
- Number.cs
- DtrList.cs
- ThicknessConverter.cs
- NullableIntAverageAggregationOperator.cs
- ServiceReference.cs
- LassoHelper.cs
- BamlBinaryReader.cs
- HelpInfo.cs
- UserInitiatedNavigationPermission.cs
- TableLayoutCellPaintEventArgs.cs
- Switch.cs
- ErrorInfoXmlDocument.cs
- TextCompositionEventArgs.cs
- Stack.cs
- MailMessageEventArgs.cs
- VisualProxy.cs
- ConstraintEnumerator.cs
- ScriptControl.cs
- ServiceReference.cs
- TreeNodeBindingDepthConverter.cs
- TemplatedMailWebEventProvider.cs
- ApplicationInfo.cs
- XhtmlCssHandler.cs
- DrawingServices.cs
- WindowsTreeView.cs
- DbExpressionRules.cs
- TrustLevelCollection.cs
- ProfileService.cs
- BindingUtils.cs
- StrokeNodeOperations.cs
- DataGridViewBindingCompleteEventArgs.cs
- ZipIOExtraFieldElement.cs
- PublishLicense.cs
- CellRelation.cs
- BasicViewGenerator.cs
- StylusOverProperty.cs
- TableItemProviderWrapper.cs
- IndentTextWriter.cs
- TextDecorationCollection.cs
- ICspAsymmetricAlgorithm.cs
- MD5.cs
- ComPlusInstanceContextInitializer.cs
- Attributes.cs
- HttpEncoder.cs
- LayoutEditorPart.cs
- PixelShader.cs
- ManifestBasedResourceGroveler.cs
- SR.cs
- SoapWriter.cs
- MsmqAppDomainProtocolHandler.cs
- ModuleBuilder.cs
- OleTxTransaction.cs
- RegistryPermission.cs
- EndPoint.cs
- ProfileGroupSettingsCollection.cs
- CompiledQueryCacheEntry.cs
- MarkupCompiler.cs
- Dictionary.cs
- PropertyDescriptorCollection.cs
- storepermissionattribute.cs
- DocumentViewer.cs
- Form.cs
- CompareInfo.cs
- BamlWriter.cs