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
- SchemaCollectionCompiler.cs
- IntSecurity.cs
- EntityDataSourceWrapperPropertyDescriptor.cs
- SubMenuStyleCollection.cs
- SelectedGridItemChangedEvent.cs
- SessionParameter.cs
- VisualBrush.cs
- typedescriptorpermissionattribute.cs
- DnsPermission.cs
- RoleManagerSection.cs
- ClientSettingsStore.cs
- CursorConverter.cs
- FileDialogPermission.cs
- SiteMapProvider.cs
- ProcessStartInfo.cs
- Delegate.cs
- Point3DConverter.cs
- CultureInfo.cs
- GridViewRowPresenter.cs
- OpenTypeLayout.cs
- ButtonChrome.cs
- TableAdapterManagerNameHandler.cs
- SafeCryptoHandles.cs
- DataMisalignedException.cs
- DoubleIndependentAnimationStorage.cs
- DecimalAnimation.cs
- FieldToken.cs
- OptimalTextSource.cs
- ToolboxItemFilterAttribute.cs
- Scanner.cs
- DynamicDataRouteHandler.cs
- OracleConnectionStringBuilder.cs
- MenuStrip.cs
- TextEditor.cs
- StorageAssociationSetMapping.cs
- RegexBoyerMoore.cs
- RawStylusInputCustomData.cs
- entityreference_tresulttype.cs
- DictionarySectionHandler.cs
- ListViewSortEventArgs.cs
- ActionFrame.cs
- LockRecursionException.cs
- SystemIPGlobalStatistics.cs
- validation.cs
- MonthChangedEventArgs.cs
- OleDbFactory.cs
- PageAsyncTaskManager.cs
- NGCPageContentSerializerAsync.cs
- SourceFilter.cs
- Debug.cs
- ConstraintCollection.cs
- COAUTHINFO.cs
- GridViewUpdatedEventArgs.cs
- HttpModule.cs
- TrackingServices.cs
- Manipulation.cs
- RawStylusInputReport.cs
- CharEntityEncoderFallback.cs
- DelegateBodyWriter.cs
- BinaryNode.cs
- FormsAuthenticationEventArgs.cs
- Inflater.cs
- DispatcherTimer.cs
- TextElementEnumerator.cs
- ToolStripDropDownMenu.cs
- LogoValidationException.cs
- PathStreamGeometryContext.cs
- DashStyle.cs
- IsolatedStorageFileStream.cs
- Compilation.cs
- GetWorkflowTree.cs
- DataGridViewImageColumn.cs
- BindingMemberInfo.cs
- SizeValueSerializer.cs
- TextDocumentView.cs
- Function.cs
- ButtonBase.cs
- DataSvcMapFile.cs
- MarshalDirectiveException.cs
- OdbcConnectionString.cs
- XamlTreeBuilderBamlRecordWriter.cs
- ZipIOExtraFieldElement.cs
- FileSystemWatcher.cs
- TypeAccessException.cs
- SqlAliasesReferenced.cs
- ManagementClass.cs
- EditorZoneBase.cs
- GestureRecognitionResult.cs
- SessionIDManager.cs
- DataSourceControlBuilder.cs
- SoapWriter.cs
- DigestTraceRecordHelper.cs
- odbcmetadatacolumnnames.cs
- HttpHandler.cs
- StackOverflowException.cs
- ImpersonationContext.cs
- KeyBinding.cs
- ColorConvertedBitmapExtension.cs
- DesignerSerializationVisibilityAttribute.cs
- WebEvents.cs