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
- SQLUtility.cs
- DataGridViewRowEventArgs.cs
- safex509handles.cs
- StringFunctions.cs
- XmlSignatureManifest.cs
- ConstructorNeedsTagAttribute.cs
- LassoSelectionBehavior.cs
- SecurityTokenAuthenticator.cs
- CodeExporter.cs
- DiscoveryReference.cs
- ObjectParameter.cs
- ImageBrush.cs
- SqlXmlStorage.cs
- DataColumnChangeEvent.cs
- ResourcePool.cs
- ViewPort3D.cs
- SchemaNames.cs
- EdmType.cs
- WindowsProgressbar.cs
- Brushes.cs
- ObjectStateEntryDbUpdatableDataRecord.cs
- ProxyWebPartManagerDesigner.cs
- OracleInfoMessageEventArgs.cs
- _LocalDataStoreMgr.cs
- LineUtil.cs
- SiteMapDataSource.cs
- CancellationScope.cs
- HtmlControl.cs
- FunctionNode.cs
- ClientBuildManagerCallback.cs
- DecimalAnimationUsingKeyFrames.cs
- SmtpFailedRecipientException.cs
- PersonalizableAttribute.cs
- InvariantComparer.cs
- HMAC.cs
- WebServiceHandler.cs
- GlyphRunDrawing.cs
- Attribute.cs
- XmlAttribute.cs
- TypeContext.cs
- HostedHttpTransportManager.cs
- Mappings.cs
- StdValidatorsAndConverters.cs
- RetrieveVirtualItemEventArgs.cs
- X509AudioLogo.cs
- FaultException.cs
- HandlerElement.cs
- RSAPKCS1SignatureDeformatter.cs
- Semaphore.cs
- SchemaImporter.cs
- unitconverter.cs
- BaseProcessor.cs
- DbParameterHelper.cs
- DataPagerFieldItem.cs
- InstanceDescriptor.cs
- WebHeaderCollection.cs
- ScopedKnownTypes.cs
- WebConfigurationHostFileChange.cs
- Win32.cs
- CatalogPart.cs
- XslNumber.cs
- CompositeActivityDesigner.cs
- UnicastIPAddressInformationCollection.cs
- DbSourceParameterCollection.cs
- CapabilitiesAssignment.cs
- PageThemeCodeDomTreeGenerator.cs
- LocalClientSecuritySettingsElement.cs
- XmlWrappingReader.cs
- ScriptComponentDescriptor.cs
- BrowserCapabilitiesFactory.cs
- DecoratedNameAttribute.cs
- BinaryParser.cs
- ClientRuntimeConfig.cs
- DefaultHttpHandler.cs
- Vector3DIndependentAnimationStorage.cs
- BamlLocalizer.cs
- ProxyElement.cs
- StrongNameUtility.cs
- TypeBuilderInstantiation.cs
- ScriptBehaviorDescriptor.cs
- QilNode.cs
- SqlCacheDependencySection.cs
- ClientTarget.cs
- UserPreferenceChangingEventArgs.cs
- CompositeControl.cs
- Control.cs
- WebScriptServiceHostFactory.cs
- Site.cs
- ParallelEnumerable.cs
- CultureInfoConverter.cs
- ObjectListTitleAttribute.cs
- SecurityContextKeyIdentifierClause.cs
- DataGridRowClipboardEventArgs.cs
- latinshape.cs
- Blend.cs
- HyperLinkStyle.cs
- FormsAuthenticationUser.cs
- Activity.cs
- FullTrustAssembly.cs
- EndpointDispatcher.cs