Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / Controls / SelectedCellsCollection.cs / 1305600 / SelectedCellsCollection.cs
//---------------------------------------------------------------------------- // // Copyright (C) Microsoft Corporation. All rights reserved. // //--------------------------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using System.Collections.Specialized; using System.ComponentModel; using System.Diagnostics; namespace System.Windows.Controls { ////// A collection that optimizes the storage of DataGridCellInfo. /// ////// The collection is exposed through the DataGrid.SelectedCells property as /// a generic IList. /// /// The collection maintains a list of DataGridCellInfo so that users of the /// SelectedCells property can interact with it like a normal list. /// /// The collection maintains a dictionary mapping rows to columns and /// a dictionary that maps columns to rows. This allows quick retrieval /// of all selected cells in a particular row or column. These are /// operations that occur when select/deselecting a row or column. /// /// The collection implements all the parts of INotifyCollectionChanged so /// that the DataGrid can be notified of changes, but does not expose the /// interface so that SelectedCells can't be cast to it. This was to /// reduce the test coverage and the undiscoverability of the interface. /// internal sealed class SelectedCellsCollection : VirtualizedCellInfoCollection { #region Construction internal SelectedCellsCollection(DataGrid owner) : base(owner) { } #endregion #region DataGrid API ////// Calculates the bounding box of the cells. /// ///true if not empty, false if empty. internal bool GetSelectionRange(out int minColumnDisplayIndex, out int maxColumnDisplayIndex, out int minRowIndex, out int maxRowIndex) { if (IsEmpty) { minColumnDisplayIndex = -1; maxColumnDisplayIndex = -1; minRowIndex = -1; maxRowIndex = -1; return false; } else { GetBoundingRegion(out minColumnDisplayIndex, out minRowIndex, out maxColumnDisplayIndex, out maxRowIndex); return true; } } #endregion #region Collection Changed Notification ////// Notify the owning DataGrid of changes to this collection. /// protected override void OnCollectionChanged(NotifyCollectionChangedAction action, VirtualizedCellInfoCollection oldItems, VirtualizedCellInfoCollection newItems) { Owner.OnSelectedCellsChanged(action, oldItems, newItems); } #endregion } } // 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 System; using System.Collections; using System.Collections.Generic; using System.Collections.Specialized; using System.ComponentModel; using System.Diagnostics; namespace System.Windows.Controls { ////// A collection that optimizes the storage of DataGridCellInfo. /// ////// The collection is exposed through the DataGrid.SelectedCells property as /// a generic IList. /// /// The collection maintains a list of DataGridCellInfo so that users of the /// SelectedCells property can interact with it like a normal list. /// /// The collection maintains a dictionary mapping rows to columns and /// a dictionary that maps columns to rows. This allows quick retrieval /// of all selected cells in a particular row or column. These are /// operations that occur when select/deselecting a row or column. /// /// The collection implements all the parts of INotifyCollectionChanged so /// that the DataGrid can be notified of changes, but does not expose the /// interface so that SelectedCells can't be cast to it. This was to /// reduce the test coverage and the undiscoverability of the interface. /// internal sealed class SelectedCellsCollection : VirtualizedCellInfoCollection { #region Construction internal SelectedCellsCollection(DataGrid owner) : base(owner) { } #endregion #region DataGrid API ////// Calculates the bounding box of the cells. /// ///true if not empty, false if empty. internal bool GetSelectionRange(out int minColumnDisplayIndex, out int maxColumnDisplayIndex, out int minRowIndex, out int maxRowIndex) { if (IsEmpty) { minColumnDisplayIndex = -1; maxColumnDisplayIndex = -1; minRowIndex = -1; maxRowIndex = -1; return false; } else { GetBoundingRegion(out minColumnDisplayIndex, out minRowIndex, out maxColumnDisplayIndex, out maxRowIndex); return true; } } #endregion #region Collection Changed Notification ////// Notify the owning DataGrid of changes to this collection. /// protected override void OnCollectionChanged(NotifyCollectionChangedAction action, VirtualizedCellInfoCollection oldItems, VirtualizedCellInfoCollection newItems) { Owner.OnSelectedCellsChanged(action, oldItems, newItems); } #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
- SqlDataSource.cs
- XmlnsPrefixAttribute.cs
- StringConcat.cs
- DataErrorValidationRule.cs
- CloseSequenceResponse.cs
- AutomationTextAttribute.cs
- BCLDebug.cs
- FeatureManager.cs
- SignatureDescription.cs
- OpenFileDialog.cs
- ClientSideQueueItem.cs
- MemberExpression.cs
- IxmlLineInfo.cs
- UserControlCodeDomTreeGenerator.cs
- _BasicClient.cs
- SessionPageStateSection.cs
- EntityDataSourceReferenceGroup.cs
- PartitionResolver.cs
- MultiView.cs
- IPHostEntry.cs
- CodeMethodReturnStatement.cs
- ActivityDesignerHelper.cs
- X509Extension.cs
- DataGridViewImageCell.cs
- Compiler.cs
- QilInvoke.cs
- LambdaExpression.cs
- Blend.cs
- WorkflowPersistenceService.cs
- XsdBuildProvider.cs
- TableRow.cs
- QuestionEventArgs.cs
- MainMenu.cs
- Number.cs
- EntityDataSourceDesignerHelper.cs
- NativeMethods.cs
- PersistenceContextEnlistment.cs
- xml.cs
- MembershipSection.cs
- RoleManagerEventArgs.cs
- Polyline.cs
- SafeUserTokenHandle.cs
- DbParameterHelper.cs
- ProtocolsSection.cs
- followingquery.cs
- EntityParameter.cs
- DistributedTransactionPermission.cs
- RuleSettings.cs
- DataGridViewIntLinkedList.cs
- SamlSerializer.cs
- DefaultAsyncDataDispatcher.cs
- cookieexception.cs
- SqlBulkCopyColumnMappingCollection.cs
- AdornerPresentationContext.cs
- EntityDesignerDataSourceView.cs
- TableSectionStyle.cs
- EdmToObjectNamespaceMap.cs
- DataGridCaption.cs
- MenuCommands.cs
- BoolExpr.cs
- unsafenativemethodstextservices.cs
- Opcode.cs
- AutomationPatternInfo.cs
- UnsafeNativeMethods.cs
- EntityDataReader.cs
- XPathSingletonIterator.cs
- ListViewDataItem.cs
- CompModSwitches.cs
- PrintDialog.cs
- Socket.cs
- FontDriver.cs
- DesignRelation.cs
- ThemeableAttribute.cs
- DateTimeConverter2.cs
- basemetadatamappingvisitor.cs
- DataSourceControlBuilder.cs
- ErrorProvider.cs
- XmlSchemaSequence.cs
- AtomParser.cs
- StorageMappingItemLoader.cs
- SessionPageStatePersister.cs
- PropertyIdentifier.cs
- NamespaceEmitter.cs
- ActivityInterfaces.cs
- MenuItemStyleCollection.cs
- SqlRowUpdatedEvent.cs
- SelectedCellsCollection.cs
- CFStream.cs
- TypeSource.cs
- SmiConnection.cs
- BamlLocalizer.cs
- FormsAuthenticationTicket.cs
- EntityDataSourceDataSelection.cs
- BaseCodeDomTreeGenerator.cs
- AdRotator.cs
- XmlWriter.cs
- DbConnectionPoolCounters.cs
- NonClientArea.cs
- ValueTable.cs
- DataTableTypeConverter.cs