This topic has not yet been rated - Rate this topic

DataGrid.CellEditEnding Event

Occurs before a cell edit is committed or canceled.

Namespace:  System.Windows.Controls
Assembly:  PresentationFramework (in PresentationFramework.dll)
XMLNS for XAML: http://schemas.microsoft.com/winfx/2006/xaml/presentation, http://schemas.microsoft.com/netfx/2007/xaml/presentation
public event EventHandler<DataGridCellEditEndingEventArgs> CellEditEnding
<object CellEditEnding="EventHandler<DataGridCellEditEndingEventArgs>" .../>

You can cancel this event by setting the Cancel property of the e argument to true in the event handler. If canceled, the cell remains in edit mode.

If this event is not canceled, the specified EditAction will be performed to commit or cancel the edit.

.NET Framework

Supported in: 4

.NET Framework Client Profile

Supported in: 4

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Did you find this helpful?
(1500 characters remaining)
Community Content Add
Annotations FAQ
Using CellEditEnding for Validation

You'll want to do some kind of real validation instead of just making sure the box doesn't contain a period, but it's easy to cancel invalid input from being entered into the datagrid:

  

private void myGrid_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
        {
            var dataEntered = ((TextBox)e.EditingElement).Text;
            if (!ValidData(dataEntered))
            {
                e.Cancel = true;
                MessageBox.Show("Invalid data entered.  Cancelling.");
                return;
            }

            MessageBox.Show("Valid Data Entered.");
        }

        private bool ValidData(string dataEntered)
        {
            if (dataEntered.Contains('.'))
            {
                return false;
            }
            return true;
        }