Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DynamicEndpointElement.cs
- InnerItemCollectionView.cs
- VisualTreeHelper.cs
- FontStretch.cs
- SqlDataReaderSmi.cs
- X509CertificateClaimSet.cs
- HtmlInputButton.cs
- SqlSelectClauseBuilder.cs
- ImageSource.cs
- DrawListViewSubItemEventArgs.cs
- Filter.cs
- AccessDataSourceView.cs
- GlobalProxySelection.cs
- PowerModeChangedEventArgs.cs
- NotFiniteNumberException.cs
- PolyBezierSegment.cs
- XmlDataSourceNodeDescriptor.cs
- SmiEventSink_Default.cs
- EndpointAddress10.cs
- UserControlAutomationPeer.cs
- Sentence.cs
- PointCollectionConverter.cs
- HierarchicalDataBoundControlAdapter.cs
- PropertyChangingEventArgs.cs
- CommandEventArgs.cs
- TdsParserStateObject.cs
- SystemIPGlobalStatistics.cs
- FormParameter.cs
- PublisherIdentityPermission.cs
- RsaSecurityKey.cs
- EventRecord.cs
- RoutedEventValueSerializer.cs
- DataExpression.cs
- DummyDataSource.cs
- CodeGotoStatement.cs
- FormattedText.cs
- Brushes.cs
- ExpressionParser.cs
- Permission.cs
- _TLSstream.cs
- ValueConversionAttribute.cs
- SecureEnvironment.cs
- LoginCancelEventArgs.cs
- Utils.cs
- RadioButtonPopupAdapter.cs
- SafeViewOfFileHandle.cs
- ItemsPanelTemplate.cs
- AppSettingsExpressionBuilder.cs
- IssuedTokenServiceElement.cs
- MexHttpBindingElement.cs
- SimpleTypeResolver.cs
- Bidi.cs
- XmlUnspecifiedAttribute.cs
- Separator.cs
- WebRequestModuleElementCollection.cs
- BamlLocalizableResource.cs
- ExpandSegment.cs
- MSG.cs
- AsynchronousChannelMergeEnumerator.cs
- Boolean.cs
- ClaimSet.cs
- StreamAsIStream.cs
- LayoutManager.cs
- QuadraticEase.cs
- Timer.cs
- ConfigurationElementCollection.cs
- IdnElement.cs
- PerformanceCounterPermissionEntryCollection.cs
- WebBaseEventKeyComparer.cs
- GridView.cs
- AutomationProperties.cs
- _UncName.cs
- SecUtil.cs
- VisualProxy.cs
- UnknownWrapper.cs
- XmlSerializerVersionAttribute.cs
- TemplateColumn.cs
- Throw.cs
- ConfigXmlSignificantWhitespace.cs
- ChangeProcessor.cs
- PagerStyle.cs
- MenuAdapter.cs
- ContentIterators.cs
- FixedTextBuilder.cs
- WebConfigurationHost.cs
- TextSelectionHelper.cs
- ValidatorCompatibilityHelper.cs
- MaskPropertyEditor.cs
- DataTableExtensions.cs
- SafeProcessHandle.cs
- WS2007HttpBindingElement.cs
- SoapSchemaExporter.cs
- ValueExpressions.cs
- MultipleViewProviderWrapper.cs
- TraceSource.cs
- DataSourceCacheDurationConverter.cs
- ArgIterator.cs
- ScrollData.cs
- AccessViolationException.cs
- Control.cs