private static void OnIsSelectedChanged(object sender, DependencyPropertyChangedEventArgs e) { DataGridCell cell = (DataGridCell)sender; bool isSelected = (bool)e.NewValue; // There is no reason to notify the DataGrid if IsSelected's value came // from the DataGrid. if (!cell._syncingIsSelected) { DataGrid dataGrid = cell.DataGridOwner; if (dataGrid != null) { // Notify the DataGrid that a cell's IsSelected property changed // in case it was done programmatically instead of by the // DataGrid itself. dataGrid.CellIsSelectedChanged(cell, isSelected); } } cell.RaiseSelectionChangedEvent(isSelected); }