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
- X500Name.cs
- WriteFileContext.cs
- DocumentGrid.cs
- Table.cs
- EntityDataSourceEntityTypeFilterItem.cs
- NativeMethods.cs
- TextTreeRootTextBlock.cs
- CompilationSection.cs
- MetadataArtifactLoaderXmlReaderWrapper.cs
- CallContext.cs
- EntityTypeEmitter.cs
- COM2TypeInfoProcessor.cs
- DelegatingTypeDescriptionProvider.cs
- MessageAction.cs
- EventArgs.cs
- FtpWebResponse.cs
- ContextDataSourceView.cs
- CatalogPartChrome.cs
- ShapingEngine.cs
- TriggerAction.cs
- XmlJsonReader.cs
- RepeaterItemEventArgs.cs
- ContentElement.cs
- DrawingImage.cs
- HandleRef.cs
- StandardToolWindows.cs
- OleDbConnectionFactory.cs
- ContextMarshalException.cs
- TextRunCacheImp.cs
- DataGridColumnCollection.cs
- ClientSettingsSection.cs
- XmlTextWriter.cs
- ScriptingRoleServiceSection.cs
- AmbientValueAttribute.cs
- StylusShape.cs
- NativeWindow.cs
- AuthorizationSection.cs
- OracleEncoding.cs
- BitmapEncoder.cs
- SoapFault.cs
- XamlFigureLengthSerializer.cs
- Utils.cs
- TypedAsyncResult.cs
- ListView.cs
- ContentPlaceHolder.cs
- WebBrowser.cs
- InfoCardListRequest.cs
- SparseMemoryStream.cs
- BitmapEffectInput.cs
- ResourceAssociationType.cs
- ApplicationFileCodeDomTreeGenerator.cs
- CompositeKey.cs
- WebPartActionVerb.cs
- SqlCrossApplyToCrossJoin.cs
- ObjectQueryExecutionPlan.cs
- xmlsaver.cs
- XmlDataProvider.cs
- ValidationHelper.cs
- ProvidersHelper.cs
- controlskin.cs
- ChangePassword.cs
- ProtocolElement.cs
- EnumerableRowCollection.cs
- Message.cs
- DockAndAnchorLayout.cs
- ContextStaticAttribute.cs
- ClientScriptItem.cs
- PageThemeBuildProvider.cs
- BrowserCapabilitiesFactoryBase.cs
- AsyncOperationManager.cs
- DbParameterCollectionHelper.cs
- ComboBox.cs
- HttpPostedFile.cs
- FrameworkElementFactory.cs
- EmptyStringExpandableObjectConverter.cs
- DataGridCellsPanel.cs
- DiscoveryClientProtocol.cs
- SetIterators.cs
- ProxyWebPart.cs
- BeginStoryboard.cs
- Normalization.cs
- SoapCodeExporter.cs
- SecuritySessionServerSettings.cs
- CancellationTokenRegistration.cs
- SharedPersonalizationStateInfo.cs
- HeaderCollection.cs
- SuppressMessageAttribute.cs
- XpsPackagingException.cs
- Point4DValueSerializer.cs
- SourceFileInfo.cs
- Stack.cs
- CompiledAction.cs
- EnumerableRowCollectionExtensions.cs
- JulianCalendar.cs
- WindowsPrincipal.cs
- EventLogException.cs
- ChildTable.cs
- SourceChangedEventArgs.cs
- CodeThrowExceptionStatement.cs
- SimplePropertyEntry.cs