internal override void OnEditCommitted(DataGridItemEventArgs e)
        {
            object item = e.Item;

            DataGridPageManagerBase pageManager = this.RootGroup.GetVirtualPageManager();

            // Compare cached values with current values.  If they are the same, we can clear the old values which in turn will
            // make the item non dirty.
            bool clearIsDirty = true;

            VirtualizedItemValueCollection cachedValues = pageManager.GetCachedValuesForItem(item);

            Debug.Assert(cachedValues != null);

            DataGridItemPropertyCollection itemProperties = this.ItemProperties;

            foreach (DataGridItemPropertyBase itemProperty in itemProperties)
            {
                object currentValue = itemProperty.GetValue(item);

                if (!(object.Equals(currentValue, cachedValues[itemProperty.Name])))
                {
                    clearIsDirty = false;
                    break;
                }
            }

            if (clearIsDirty)
            {
                // No modification was detected.
                pageManager.ClearCachedValuesForItem(item);
            }
            else if (m_commitMode == CommitMode.EditCommitted)
            {
                pageManager.CommitAll();
            }

            base.OnEditCommitted(e);
        }