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
- EvidenceBase.cs
- DataGridViewRow.cs
- brushes.cs
- BitmapMetadataEnumerator.cs
- StoryFragments.cs
- NetSectionGroup.cs
- CodeVariableReferenceExpression.cs
- SystemIcmpV4Statistics.cs
- MissingMemberException.cs
- RelationshipConverter.cs
- PolicyException.cs
- EventLogQuery.cs
- WindowsTreeView.cs
- AstTree.cs
- KnownTypeHelper.cs
- OutputCacheProfileCollection.cs
- Parsers.cs
- DisplayMemberTemplateSelector.cs
- MimeObjectFactory.cs
- DoubleIndependentAnimationStorage.cs
- RequestCachingSection.cs
- ScriptResourceInfo.cs
- FileLogRecordStream.cs
- BitConverter.cs
- ContentElement.cs
- ConnectionPool.cs
- HashSetDebugView.cs
- ControlParser.cs
- MediaContextNotificationWindow.cs
- Mapping.cs
- MessageSecurityOverTcpElement.cs
- ToolboxItem.cs
- ProcessProtocolHandler.cs
- JournalNavigationScope.cs
- TransformerConfigurationWizardBase.cs
- baseaxisquery.cs
- CompareValidator.cs
- DetailsView.cs
- VolatileResourceManager.cs
- AmbientValueAttribute.cs
- SqlLiftIndependentRowExpressions.cs
- DisableDpiAwarenessAttribute.cs
- DetailsViewDeletedEventArgs.cs
- FileAuthorizationModule.cs
- JsonSerializer.cs
- PrivilegedConfigurationManager.cs
- CharEnumerator.cs
- SafeMILHandle.cs
- Comparer.cs
- SqlDataSourceDesigner.cs
- StrokeIntersection.cs
- ColorAnimation.cs
- PerfCounterSection.cs
- TextEditorSpelling.cs
- HtmlControlPersistable.cs
- VirtualizingPanel.cs
- DynamicAttribute.cs
- EventLogEntryCollection.cs
- DataTableNewRowEvent.cs
- Point3DConverter.cs
- HwndStylusInputProvider.cs
- TextServicesCompartmentEventSink.cs
- ArrayList.cs
- JoinElimination.cs
- SerializationEventsCache.cs
- TreeNode.cs
- EncoderParameters.cs
- RoutedEventValueSerializer.cs
- ToolboxComponentsCreatedEventArgs.cs
- ThreadAbortException.cs
- HuffmanTree.cs
- TextParagraphView.cs
- ManagementInstaller.cs
- LineGeometry.cs
- PartitionedDataSource.cs
- Int32RectConverter.cs
- DrawTreeNodeEventArgs.cs
- PathSegmentCollection.cs
- ButtonPopupAdapter.cs
- ExternalCalls.cs
- SafeMemoryMappedFileHandle.cs
- templategroup.cs
- EncryptedKey.cs
- ReadOnlyNameValueCollection.cs
- ObjectSet.cs
- IDispatchConstantAttribute.cs
- DummyDataSource.cs
- linebase.cs
- LineInfo.cs
- GlyphRunDrawing.cs
- TrackingDataItem.cs
- ScriptResourceHandler.cs
- SqlNode.cs
- Console.cs
- DrawListViewColumnHeaderEventArgs.cs
- Imaging.cs
- AppDomain.cs
- TimeSpanMinutesOrInfiniteConverter.cs
- SharedUtils.cs
- ReferencedType.cs