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
- BaseDataListPage.cs
- EmptyCollection.cs
- SerialStream.cs
- Select.cs
- MetadataCache.cs
- CharacterBufferReference.cs
- ToggleProviderWrapper.cs
- MetabaseSettings.cs
- XmlObjectSerializerWriteContextComplex.cs
- SchemaNotation.cs
- SplitterPanel.cs
- RegistryPermission.cs
- IndexedWhereQueryOperator.cs
- COM2Enum.cs
- SoapClientProtocol.cs
- ExtendedPropertyDescriptor.cs
- DataGridCommandEventArgs.cs
- SafeUserTokenHandle.cs
- SmtpDigestAuthenticationModule.cs
- XmlLanguage.cs
- XmlSchemaComplexType.cs
- DataSet.cs
- ViewEventArgs.cs
- SafeCryptContextHandle.cs
- PathFigure.cs
- ImageCreator.cs
- Message.cs
- SafeCoTaskMem.cs
- FullTrustAssembliesSection.cs
- PathParser.cs
- SafeMILHandleMemoryPressure.cs
- TextSpan.cs
- WindowsListViewItem.cs
- Highlights.cs
- CodeLabeledStatement.cs
- InputLangChangeRequestEvent.cs
- HandlerBase.cs
- TextTreeRootNode.cs
- FakeModelPropertyImpl.cs
- Light.cs
- DesignerAttribute.cs
- SqlConnection.cs
- XmlNamespaceDeclarationsAttribute.cs
- TileBrush.cs
- dataprotectionpermissionattribute.cs
- GradientStop.cs
- SpecularMaterial.cs
- Convert.cs
- StylusButton.cs
- RawUIStateInputReport.cs
- System.Data.OracleClient_BID.cs
- DataTableCollection.cs
- CriticalExceptions.cs
- ColumnResizeUndoUnit.cs
- SqlConnectionHelper.cs
- WindowsToolbarAsMenu.cs
- OAVariantLib.cs
- TracingConnection.cs
- SharedUtils.cs
- UserControl.cs
- TabControlDesigner.cs
- Rfc4050KeyFormatter.cs
- SessionStateContainer.cs
- MasterPageCodeDomTreeGenerator.cs
- DCSafeHandle.cs
- TemplatePartAttribute.cs
- COM2ExtendedTypeConverter.cs
- WebPartConnectionsConnectVerb.cs
- TripleDES.cs
- PartialTrustVisibleAssemblyCollection.cs
- DynamicEndpointElement.cs
- CodePageEncoding.cs
- ValueChangedEventManager.cs
- PageCache.cs
- RelOps.cs
- CatchBlock.cs
- DeclaredTypeValidator.cs
- SurrogateEncoder.cs
- ListChangedEventArgs.cs
- JsonFormatReaderGenerator.cs
- DecoderFallbackWithFailureFlag.cs
- CodeMethodInvokeExpression.cs
- Compiler.cs
- CounterCreationDataCollection.cs
- GlobalAllocSafeHandle.cs
- OleDbReferenceCollection.cs
- SQLByte.cs
- DiffuseMaterial.cs
- SqlXmlStorage.cs
- mactripleDES.cs
- MetaDataInfo.cs
- __ConsoleStream.cs
- VisualTransition.cs
- HybridObjectCache.cs
- ArrayWithOffset.cs
- Control.cs
- AnnotationObservableCollection.cs
- PointCollectionValueSerializer.cs
- AppendHelper.cs
- SapiGrammar.cs