Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / Controls / Primitives / DataGridRowsPresenter.cs / 1305600 / DataGridRowsPresenter.cs
//----------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
//---------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Threading;
using MS.Internal;
namespace System.Windows.Controls.Primitives
{
///
/// Panel that lays out individual rows top to bottom.
///
public class DataGridRowsPresenter : VirtualizingStackPanel
{
#region Scroll Methods
///
/// Calls the protected method BringIndexIntoView.
///
/// The index of the row to scroll into view.
///
/// BringIndexIntoView should be callable either from the ItemsControl
/// or directly on the panel. This was not done in WPF, so we are
/// building this internally for the DataGrid. However, if a public
/// way of calling BringIndexIntoView becomes a reality, then
/// this method is no longer needed.
///
internal void InternalBringIndexIntoView(int index)
{
BringIndexIntoView(index);
}
///
/// This method is invoked when the IsItemsHost property changes.
///
/// The old value of the IsItemsHost property.
/// The new value of the IsItemsHost property.
protected override void OnIsItemsHostChanged(bool oldIsItemsHost, bool newIsItemsHost)
{
base.OnIsItemsHostChanged(oldIsItemsHost, newIsItemsHost);
if (newIsItemsHost)
{
DataGrid dataGrid = Owner;
if (dataGrid != null)
{
// ItemsHost should be the "root" element which has
// IsItemsHost = true on it. In the case of grouping,
// IsItemsHost is true on all panels which are generating
// content. Thus, we care only about the panel which
// is generating content for the ItemsControl.
IItemContainerGenerator generator = dataGrid.ItemContainerGenerator as IItemContainerGenerator;
if (generator != null && generator == generator.GetItemContainerGeneratorForPanel(this))
{
dataGrid.InternalItemsHost = this;
}
}
}
else
{
// No longer the items host, clear out the property on the DataGrid
if ((_owner != null) && (_owner.InternalItemsHost == this))
{
_owner.InternalItemsHost = null;
}
_owner = null;
}
}
///
/// Override of ViewportSizeChanged method which enqueues a dispatcher operation to redistribute
/// the width among columns.
///
/// viewport size before the change
/// viewport size after the change
protected override void OnViewportSizeChanged(Size oldViewportSize, Size newViewportSize)
{
DataGrid dataGrid = Owner;
if (dataGrid != null)
{
ScrollContentPresenter scrollContentPresenter = dataGrid.InternalScrollContentPresenter;
if (scrollContentPresenter == null || scrollContentPresenter.CanContentScroll)
{
dataGrid.OnViewportSizeChanged(oldViewportSize, newViewportSize);
}
}
}
#endregion
#region Column Virtualization
///
/// Measure
///
protected override Size MeasureOverride(Size constraint)
{
_availableSize = constraint;
return base.MeasureOverride(constraint);
}
///
/// Property which returns the last measure input size
///
internal Size AvailableSize
{
get
{
return _availableSize;
}
}
#endregion
#region Row Virtualization
///
/// Override method to suppress the cleanup of rows
/// with validation errors.
///
///
protected override void OnCleanUpVirtualizedItem(CleanUpVirtualizedItemEventArgs e)
{
base.OnCleanUpVirtualizedItem(e);
if (e.UIElement != null &&
Validation.GetHasError(e.UIElement))
{
e.Cancel = true;
}
}
#endregion
#region Helpers
internal DataGrid Owner
{
get
{
if (_owner == null)
{
_owner = ItemsControl.GetItemsOwner(this) as DataGrid;
}
return _owner;
}
}
#endregion
#region Data
private DataGrid _owner;
private Size _availableSize;
#endregion
}
}
// 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
- EndOfStreamException.cs
- ColorDialog.cs
- _NestedSingleAsyncResult.cs
- SetterBaseCollection.cs
- FieldAccessException.cs
- Icon.cs
- PeerObject.cs
- CollectionBuilder.cs
- LZCodec.cs
- SqlStatistics.cs
- SrgsToken.cs
- ReferenceEqualityComparer.cs
- UpdateRecord.cs
- PermissionToken.cs
- LogLogRecordEnumerator.cs
- FileDataSourceCache.cs
- FunctionQuery.cs
- HtmlInputButton.cs
- WindowPatternIdentifiers.cs
- SqlDataSourceCommandParser.cs
- StylusPointPropertyInfoDefaults.cs
- MailBnfHelper.cs
- PrintPreviewGraphics.cs
- SendContent.cs
- ValueProviderWrapper.cs
- Pkcs7Signer.cs
- WeakReferenceEnumerator.cs
- CqlParser.cs
- ProbeRequestResponseAsyncResult.cs
- StyleSheetRefUrlEditor.cs
- Stackframe.cs
- SelectionChangedEventArgs.cs
- CaretElement.cs
- QilScopedVisitor.cs
- ClaimComparer.cs
- Literal.cs
- WindowsListViewGroupHelper.cs
- MouseEvent.cs
- SafeNativeMethods.cs
- ListSurrogate.cs
- DeflateEmulationStream.cs
- FolderBrowserDialog.cs
- TransformerConfigurationWizardBase.cs
- InputGestureCollection.cs
- ThreadPoolTaskScheduler.cs
- DoubleCollection.cs
- XPathAncestorQuery.cs
- BezierSegment.cs
- ObjectDisposedException.cs
- Menu.cs
- XmlSerializerAssemblyAttribute.cs
- ProjectedWrapper.cs
- PerfService.cs
- ColumnResult.cs
- DataGridCaption.cs
- PointConverter.cs
- BitmapVisualManager.cs
- SeekableReadStream.cs
- ConfigurationLoaderException.cs
- WCFBuildProvider.cs
- DataGridPageChangedEventArgs.cs
- XmlBuffer.cs
- AutoGeneratedFieldProperties.cs
- ConsoleCancelEventArgs.cs
- DataGridViewImageColumn.cs
- TraceListeners.cs
- EventTrigger.cs
- PrintDialog.cs
- CannotUnloadAppDomainException.cs
- SoapAttributes.cs
- EditorAttribute.cs
- WebBrowserBase.cs
- TimeSpanConverter.cs
- FilteredReadOnlyMetadataCollection.cs
- DataRecordInternal.cs
- SecurityCriticalDataForSet.cs
- ValidatorCompatibilityHelper.cs
- ObfuscateAssemblyAttribute.cs
- _IPv6Address.cs
- ISessionStateStore.cs
- SqlAggregateChecker.cs
- QuotedPairReader.cs
- Roles.cs
- ResourcePart.cs
- SourceItem.cs
- XmlSerializer.cs
- WebEventCodes.cs
- SecondaryIndexList.cs
- DataGridViewCellStateChangedEventArgs.cs
- PathGradientBrush.cs
- ReturnEventArgs.cs
- CommandHelper.cs
- CodeValidator.cs
- InternalMappingException.cs
- DataGridViewCellParsingEventArgs.cs
- CompositionAdorner.cs
- HwndSourceParameters.cs
- XmlSchemaDatatype.cs
- XmlTextReaderImplHelpers.cs
- OutOfProcStateClientManager.cs