private void PopulateCellContent(bool isCellEdited, DataGridColumn dataGridColumn, DataGridRow dataGridRow, DataGridCell dataGridCell) { Debug.Assert(dataGridColumn != null); Debug.Assert(dataGridRow != null); Debug.Assert(dataGridCell != null); FrameworkElement element = null; DataGridBoundColumn dataGridBoundColumn = dataGridColumn as DataGridBoundColumn; if (isCellEdited) { // Generate EditingElement and apply column style if available element = dataGridColumn.GenerateEditingElementInternal(dataGridCell, dataGridRow.DataContext); if (element != null) { if (dataGridBoundColumn != null && dataGridBoundColumn.EditingElementStyle != null) { element.SetStyleWithType(dataGridBoundColumn.EditingElementStyle); } // Subscribe to the new element's events element.Loaded += new RoutedEventHandler(EditingElement_Loaded); } } else { // Generate Element and apply column style if available element = dataGridColumn.GenerateElementInternal(dataGridCell, dataGridRow.DataContext); if (element != null) { if (dataGridBoundColumn != null && dataGridBoundColumn.ElementStyle != null) { element.SetStyleWithType(dataGridBoundColumn.ElementStyle); } } } dataGridCell.Content = element; }