Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- OdbcParameterCollection.cs
- TreeNodeBindingCollection.cs
- InplaceBitmapMetadataWriter.cs
- AccessKeyManager.cs
- StringSorter.cs
- ConfigUtil.cs
- ElementInit.cs
- ResourceDictionary.cs
- TouchDevice.cs
- SourceElementsCollection.cs
- Encoder.cs
- Stroke.cs
- TypedTableBase.cs
- MatrixAnimationUsingPath.cs
- DependsOnAttribute.cs
- KeyGesture.cs
- SQLMembershipProvider.cs
- Transform3D.cs
- ItemContainerGenerator.cs
- CompiledAction.cs
- DataKey.cs
- DataGridViewRowEventArgs.cs
- ProjectedSlot.cs
- FullTextBreakpoint.cs
- Viewport3DVisual.cs
- TableLayoutStyleCollection.cs
- httpapplicationstate.cs
- XmlBinaryWriter.cs
- TrackingMemoryStreamFactory.cs
- X509SecurityTokenAuthenticator.cs
- UserPreferenceChangedEventArgs.cs
- XmlQuerySequence.cs
- DropDownList.cs
- DataSourceIDConverter.cs
- ExternalException.cs
- HttpResponseInternalWrapper.cs
- SHA512Managed.cs
- BaseCodeDomTreeGenerator.cs
- References.cs
- ConfigurationLocationCollection.cs
- AutoGeneratedFieldProperties.cs
- Style.cs
- LinqToSqlWrapper.cs
- CounterCreationDataConverter.cs
- QilLoop.cs
- MenuItemBindingCollection.cs
- PackageFilter.cs
- ReadContentAsBinaryHelper.cs
- TypeResolver.cs
- WMICapabilities.cs
- NativeMethods.cs
- DictionarySurrogate.cs
- MetadataArtifactLoaderCompositeFile.cs
- DomainConstraint.cs
- DataGridBeginningEditEventArgs.cs
- SafeHandles.cs
- ElementFactory.cs
- TextTreeTextElementNode.cs
- _WebProxyDataBuilder.cs
- RtfToXamlLexer.cs
- DeclarativeCatalogPart.cs
- WsatEtwTraceListener.cs
- XmlNodeList.cs
- DesignerTransaction.cs
- Cursors.cs
- SelectionRangeConverter.cs
- XamlSerializationHelper.cs
- ChtmlTextWriter.cs
- OperationCanceledException.cs
- documentation.cs
- ConditionalExpression.cs
- HandoffBehavior.cs
- ControlValuePropertyAttribute.cs
- BufferAllocator.cs
- OutOfProcStateClientManager.cs
- EditorPartCollection.cs
- LambdaCompiler.Address.cs
- ArgumentDirectionHelper.cs
- AnnotationStore.cs
- _DomainName.cs
- AbsoluteQuery.cs
- TextTreeTextNode.cs
- UnionExpr.cs
- ComplusTypeValidator.cs
- VirtualizedContainerService.cs
- DragEventArgs.cs
- AppendHelper.cs
- ViewPort3D.cs
- SetStateDesigner.cs
- XmlChoiceIdentifierAttribute.cs
- SoapHeader.cs
- UnsafeNativeMethods.cs
- SessionPageStatePersister.cs
- DrawListViewSubItemEventArgs.cs
- SqlXmlStorage.cs
- SQLInt32.cs
- ScriptResourceAttribute.cs
- URLString.cs
- DataGridBoolColumn.cs
- MenuBase.cs