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
- PolyBezierSegment.cs
- RadioButtonBaseAdapter.cs
- TextElementEnumerator.cs
- ScriptBehaviorDescriptor.cs
- ReadWriteSpinLock.cs
- IndependentlyAnimatedPropertyMetadata.cs
- MimeFormatExtensions.cs
- ControlDesignerState.cs
- UriTemplateTable.cs
- SqlDataSourceConfigureFilterForm.cs
- IOException.cs
- CodeBinaryOperatorExpression.cs
- RuleInfoComparer.cs
- DateTimeFormatInfoScanner.cs
- StorageScalarPropertyMapping.cs
- PathFigureCollectionConverter.cs
- DataGridViewCellStateChangedEventArgs.cs
- ServicePoint.cs
- APCustomTypeDescriptor.cs
- SmiContextFactory.cs
- MemberInfoSerializationHolder.cs
- NameValueConfigurationCollection.cs
- ChainedAsyncResult.cs
- ListViewGroupCollectionEditor.cs
- DataSourceHelper.cs
- HyperLinkField.cs
- UrlPropertyAttribute.cs
- OutKeywords.cs
- EpmSourceTree.cs
- DocumentViewerBase.cs
- HierarchicalDataBoundControlAdapter.cs
- XmlAttributeHolder.cs
- CacheChildrenQuery.cs
- UIElementIsland.cs
- MessageQueueCriteria.cs
- DesignerContextDescriptor.cs
- Cursors.cs
- TreeChangeInfo.cs
- ErrorTableItemStyle.cs
- AsymmetricSignatureFormatter.cs
- FigureHelper.cs
- TouchPoint.cs
- SyndicationDeserializer.cs
- BinaryUtilClasses.cs
- SQLInt32.cs
- LinkedList.cs
- SystemSounds.cs
- ListViewCancelEventArgs.cs
- CellTreeNode.cs
- CacheForPrimitiveTypes.cs
- _ServiceNameStore.cs
- SourceItem.cs
- DirectoryNotFoundException.cs
- EllipseGeometry.cs
- CollectionConverter.cs
- EdmItemCollection.cs
- TreeNodeStyleCollectionEditor.cs
- oledbmetadatacollectionnames.cs
- WpfGeneratedKnownTypes.cs
- ExpandCollapseProviderWrapper.cs
- OdbcCommand.cs
- TextReader.cs
- XmlHelper.cs
- FunctionMappingTranslator.cs
- FixedNode.cs
- PackageStore.cs
- UntypedNullExpression.cs
- ClientConfigurationSystem.cs
- ThemeableAttribute.cs
- RankException.cs
- WasAdminWrapper.cs
- IdnMapping.cs
- figurelength.cs
- WMIInterop.cs
- ArglessEventHandlerProxy.cs
- ObjectManager.cs
- PageAsyncTaskManager.cs
- DateTimeConverter.cs
- RegexWorker.cs
- LoginView.cs
- CreateRefExpr.cs
- DrawingVisual.cs
- DataControlImageButton.cs
- SignHashRequest.cs
- ConfigurationSection.cs
- HttpHandlerAction.cs
- BuildProviderAppliesToAttribute.cs
- PolyLineSegment.cs
- OciLobLocator.cs
- XmlHierarchyData.cs
- Menu.cs
- WeakEventTable.cs
- ConfigXmlSignificantWhitespace.cs
- SQlBooleanStorage.cs
- TextElementCollectionHelper.cs
- TextTreeTextElementNode.cs
- TreeViewItemAutomationPeer.cs
- UnsafeNativeMethods.cs
- MissingMethodException.cs
- DataBindingExpressionBuilder.cs