internal override void OnEditBegun(DataGridItemEventArgs e) { object item = e.Item; DataGridPageManagerBase pageManager = this.RootGroup.GetVirtualPageManager(); if (!pageManager.IsItemDirty(item)) { // First time we enter edit on this item. DataGridItemPropertyCollection itemProperties = this.ItemProperties; int count = itemProperties.Count; string[] propertyNames = new string[count]; object[] cachedValues = new object[count]; for (int i = 0; i < count; i++) { DataGridItemPropertyBase itemProperty = itemProperties[i]; propertyNames[i] = itemProperty.Name; cachedValues[i] = itemProperty.GetValue(item); } // Cache the values of the never edited before row. This will help the developer find the corresponding row // in the source when times comes to commit the changes to the data source. pageManager.SetCachedValuesForItem(item, propertyNames, cachedValues); } base.OnEditBegun(e); }