Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- GestureRecognizer.cs
- InputReport.cs
- PrintPreviewControl.cs
- CompositeCollectionView.cs
- SQLCharsStorage.cs
- SqlTriggerContext.cs
- EntitySqlQueryBuilder.cs
- InheritablePropertyChangeInfo.cs
- TreeWalker.cs
- ObjectKeyFrameCollection.cs
- IItemProperties.cs
- Size.cs
- SystemThemeKey.cs
- SafeFileMapViewHandle.cs
- XPathException.cs
- TextMetrics.cs
- ProtectedConfiguration.cs
- OpenFileDialog.cs
- ContentElement.cs
- GridViewUpdatedEventArgs.cs
- CodeGeneratorOptions.cs
- XamlInt32CollectionSerializer.cs
- XmlAutoDetectWriter.cs
- TextUtf8RawTextWriter.cs
- WmlLiteralTextAdapter.cs
- OperationFormatter.cs
- ProtocolReflector.cs
- DateTimeFormatInfo.cs
- MetadataCacheItem.cs
- Math.cs
- ColorConvertedBitmap.cs
- FastEncoder.cs
- RefType.cs
- SqlUserDefinedTypeAttribute.cs
- VectorAnimation.cs
- StructuralCache.cs
- FixUpCollection.cs
- WSHttpBinding.cs
- CommonRemoteMemoryBlock.cs
- LicenseException.cs
- WebExceptionStatus.cs
- TextParagraphProperties.cs
- PackagePart.cs
- WorkItem.cs
- GlobalizationAssembly.cs
- Literal.cs
- SymLanguageVendor.cs
- MatrixAnimationUsingPath.cs
- StringFunctions.cs
- QilLiteral.cs
- HotSpotCollection.cs
- PropertyManager.cs
- Pair.cs
- Geometry3D.cs
- PackageRelationship.cs
- ProviderUtil.cs
- DispatcherOperation.cs
- RadioButtonBaseAdapter.cs
- ErrorsHelper.cs
- SerializationObjectManager.cs
- XhtmlBasicLabelAdapter.cs
- SqlUserDefinedAggregateAttribute.cs
- UnsafeNetInfoNativeMethods.cs
- VoiceSynthesis.cs
- CmsInterop.cs
- ExtensionDataObject.cs
- TextModifierScope.cs
- VisualStyleElement.cs
- SQLSingle.cs
- NameValueSectionHandler.cs
- SqlNamer.cs
- FixedSOMImage.cs
- TrackBar.cs
- LinqDataSourceDisposeEventArgs.cs
- LineServicesRun.cs
- FileUtil.cs
- Serialization.cs
- Line.cs
- SecurityManager.cs
- MonikerUtility.cs
- FieldDescriptor.cs
- Reference.cs
- UnionQueryOperator.cs
- CompiledELinqQueryState.cs
- ValidationEventArgs.cs
- SmuggledIUnknown.cs
- SqlVisitor.cs
- LayoutDump.cs
- SchemaMapping.cs
- SocketConnection.cs
- DownloadProgressEventArgs.cs
- XmlBinaryWriter.cs
- DataRecordInternal.cs
- CacheAxisQuery.cs
- DeviceSpecificDialogCachedState.cs
- MetadataCache.cs
- HMACRIPEMD160.cs
- MatrixStack.cs
- ColorMap.cs
- TargetControlTypeAttribute.cs