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
- DynamicMetaObject.cs
- Registry.cs
- ListViewItemMouseHoverEvent.cs
- GlyphShapingProperties.cs
- Cursor.cs
- AsymmetricKeyExchangeFormatter.cs
- DynamicUpdateCommand.cs
- SqlNodeAnnotation.cs
- EventSchemaTraceListener.cs
- DocumentAutomationPeer.cs
- CryptoApi.cs
- FormClosingEvent.cs
- AbstractSvcMapFileLoader.cs
- ListViewVirtualItemsSelectionRangeChangedEvent.cs
- DecoderBestFitFallback.cs
- _LocalDataStoreMgr.cs
- XmlHierarchyData.cs
- ContentValidator.cs
- CharAnimationBase.cs
- QueryConverter.cs
- remotingproxy.cs
- XmlHelper.cs
- PerformanceCounterPermission.cs
- InvokeMethodActivity.cs
- Matrix3DValueSerializer.cs
- AsymmetricKeyExchangeFormatter.cs
- ItemCollectionEditor.cs
- AQNBuilder.cs
- PropertyStore.cs
- InvokeDelegate.cs
- ScrollProperties.cs
- Pkcs7Recipient.cs
- GreenMethods.cs
- ZoneIdentityPermission.cs
- ImageListUtils.cs
- FigureParagraph.cs
- InputDevice.cs
- UnicodeEncoding.cs
- PolyBezierSegment.cs
- DelegatingMessage.cs
- ActiveDesignSurfaceEvent.cs
- AspNetSynchronizationContext.cs
- NavigationPropertyAccessor.cs
- ExpanderAutomationPeer.cs
- BuildProviderCollection.cs
- Automation.cs
- HScrollProperties.cs
- HandledMouseEvent.cs
- VectorCollection.cs
- RemoteWebConfigurationHostServer.cs
- HtmlWindow.cs
- QilList.cs
- NumericUpDownAccelerationCollection.cs
- EmbossBitmapEffect.cs
- odbcmetadatacollectionnames.cs
- ExtendedPropertyDescriptor.cs
- PolicyLevel.cs
- NullExtension.cs
- MaterialCollection.cs
- connectionpool.cs
- NestedContainer.cs
- ChangeProcessor.cs
- DocumentPageTextView.cs
- Substitution.cs
- QuaternionRotation3D.cs
- DispatcherTimer.cs
- EventProviderWriter.cs
- ImageCodecInfoPrivate.cs
- RootBuilder.cs
- PrivilegedConfigurationManager.cs
- ItemContainerProviderWrapper.cs
- Polyline.cs
- KeyboardEventArgs.cs
- AutomationIdentifierGuids.cs
- CalendarDesigner.cs
- SqlCacheDependencyDatabaseCollection.cs
- PathSegment.cs
- FlowLayoutPanel.cs
- RawUIStateInputReport.cs
- DoubleLink.cs
- COM2IPerPropertyBrowsingHandler.cs
- QilXmlWriter.cs
- DataRowCollection.cs
- KeyGesture.cs
- OleDbError.cs
- TreeSet.cs
- Mutex.cs
- SequenceDesignerAccessibleObject.cs
- CompilationUtil.cs
- PermissionSetTriple.cs
- DesignerActionService.cs
- UICuesEvent.cs
- BehaviorEditorPart.cs
- ListBindableAttribute.cs
- XmlQueryType.cs
- NameValuePermission.cs
- ImageCodecInfo.cs
- ContractNamespaceAttribute.cs
- SelectionRangeConverter.cs
- ObjectDataSourceFilteringEventArgs.cs