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); }