SelectedCellsCollection.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / untmp / 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.


                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK