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
- COAUTHIDENTITY.cs
- NetPeerTcpBinding.cs
- TabItemAutomationPeer.cs
- TypeUtils.cs
- VirtualDirectoryMapping.cs
- ScrollPattern.cs
- SwitchLevelAttribute.cs
- SHA256Managed.cs
- XmlReaderSettings.cs
- UnsettableComboBox.cs
- RawStylusSystemGestureInputReport.cs
- CriticalHandle.cs
- ToolBarButtonClickEvent.cs
- TableItemStyle.cs
- TripleDES.cs
- AssociationSetMetadata.cs
- DataGridViewComboBoxCell.cs
- HuffModule.cs
- SessionEndingEventArgs.cs
- ContextMarshalException.cs
- SQLString.cs
- PreviewKeyDownEventArgs.cs
- DataGridViewTextBoxEditingControl.cs
- CompositeScriptReferenceEventArgs.cs
- LeaseManager.cs
- COM2Enum.cs
- PeerToPeerException.cs
- PageWrapper.cs
- XmlSchemaComplexType.cs
- TextElement.cs
- ProcessThread.cs
- ClientSettingsStore.cs
- ExpressionDumper.cs
- InvariantComparer.cs
- PassportAuthenticationEventArgs.cs
- ExpressionCopier.cs
- LinkLabel.cs
- DesignerAdRotatorAdapter.cs
- DiscoveryInnerClientAdhoc11.cs
- DefaultValueTypeConverter.cs
- Html32TextWriter.cs
- XmlStringTable.cs
- TimeSpan.cs
- InstanceLockedException.cs
- DomainConstraint.cs
- CngAlgorithmGroup.cs
- NameValueSectionHandler.cs
- XhtmlTextWriter.cs
- IItemContainerGenerator.cs
- BuildProviderUtils.cs
- RadioButton.cs
- RegisteredHiddenField.cs
- DynamicQueryableWrapper.cs
- TextRangeEditLists.cs
- RemotingClientProxy.cs
- KeyboardNavigation.cs
- DeflateStream.cs
- ConstantProjectedSlot.cs
- TemplateBuilder.cs
- ObjectStateFormatter.cs
- SubMenuStyleCollection.cs
- DesignerSerializerAttribute.cs
- Int16Converter.cs
- SoapClientMessage.cs
- FontEmbeddingManager.cs
- MethodAccessException.cs
- MulticastDelegate.cs
- NavigationService.cs
- AsyncPostBackErrorEventArgs.cs
- VerificationAttribute.cs
- CTreeGenerator.cs
- UserControl.cs
- XmlAutoDetectWriter.cs
- Rect3DConverter.cs
- ColorAnimation.cs
- TextContainerChangeEventArgs.cs
- ScrollViewerAutomationPeer.cs
- OleDbDataAdapter.cs
- XamlStyleSerializer.cs
- ToolStripSystemRenderer.cs
- SecurityTokenResolver.cs
- CodeMethodMap.cs
- ListViewItemMouseHoverEvent.cs
- ServiceNameElementCollection.cs
- HGlobalSafeHandle.cs
- ContainsRowNumberChecker.cs
- SQLDateTime.cs
- CheckedPointers.cs
- TypedAsyncResult.cs
- XmlnsPrefixAttribute.cs
- EditCommandColumn.cs
- MethodExpression.cs
- MethodImplAttribute.cs
- DataGridViewCellLinkedList.cs
- ColorConverter.cs
- UnaryExpression.cs
- DrawingContextDrawingContextWalker.cs
- CodeDirectionExpression.cs
- ProgressBarHighlightConverter.cs
- DataBindingCollection.cs