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
- SqlDataRecord.cs
- SecurityTokenResolver.cs
- TextAutomationPeer.cs
- SqlServer2KCompatibilityCheck.cs
- IPipelineRuntime.cs
- _CommandStream.cs
- SingleStorage.cs
- ApplyImportsAction.cs
- ByeOperationAsyncResult.cs
- Regex.cs
- CodeAttributeArgumentCollection.cs
- DataGridViewCellToolTipTextNeededEventArgs.cs
- SnapshotChangeTrackingStrategy.cs
- ActiveXSite.cs
- LinkedResource.cs
- InputBinder.cs
- FocusManager.cs
- DirectoryNotFoundException.cs
- StatusBarPanelClickEvent.cs
- ReachDocumentPageSerializer.cs
- TextRangeBase.cs
- NumericExpr.cs
- InvalidAsynchronousStateException.cs
- ProxyManager.cs
- Italic.cs
- DataObjectAttribute.cs
- MD5.cs
- ToolBar.cs
- SuppressIldasmAttribute.cs
- CoTaskMemUnicodeSafeHandle.cs
- SamlAuthorizationDecisionStatement.cs
- DbConnectionPoolGroup.cs
- DynamicRenderer.cs
- COM2Properties.cs
- DebuggerAttributes.cs
- Point4DValueSerializer.cs
- TargetConverter.cs
- LogAppendAsyncResult.cs
- HtmlEmptyTagControlBuilder.cs
- NavigatingCancelEventArgs.cs
- Quad.cs
- TemplateInstanceAttribute.cs
- TraceUtility.cs
- PageRanges.cs
- RoleGroup.cs
- SetterBaseCollection.cs
- PbrsForward.cs
- PropertyDescriptorGridEntry.cs
- DBCSCodePageEncoding.cs
- PackageFilter.cs
- Serializer.cs
- XmlnsCache.cs
- XmlSchemaParticle.cs
- NameSpaceExtractor.cs
- StateDesigner.LayoutSelectionGlyph.cs
- _NegoState.cs
- HtmlInputImage.cs
- RegexCompilationInfo.cs
- ProfileElement.cs
- WindowsToolbar.cs
- XappLauncher.cs
- HttpRequestCacheValidator.cs
- Win32.cs
- ConfigurationPermission.cs
- MultilineStringConverter.cs
- DllNotFoundException.cs
- KeyEventArgs.cs
- WebException.cs
- COM2Enum.cs
- Terminate.cs
- HandoffBehavior.cs
- DocComment.cs
- PartialCachingControl.cs
- MatrixCamera.cs
- ManifestResourceInfo.cs
- ConnectionConsumerAttribute.cs
- XmlSchemaFacet.cs
- indexingfiltermarshaler.cs
- CodeDelegateCreateExpression.cs
- Transform3DGroup.cs
- InertiaExpansionBehavior.cs
- Tag.cs
- Typeface.cs
- WindowsFormsHelpers.cs
- PreloadedPackages.cs
- ClipboardData.cs
- XmlMemberMapping.cs
- XmlQueryContext.cs
- ConfigXmlText.cs
- GroupByExpressionRewriter.cs
- SerialPort.cs
- TargetPerspective.cs
- AddressingVersion.cs
- LineBreakRecord.cs
- XmlImplementation.cs
- VisualProxy.cs
- PointF.cs
- Fault.cs
- DataBindingValueUIHandler.cs
- TextBoxBase.cs