DG.CurrentCell = new DataGridCellInfo(DG.Items[0], DG.Columns[0]);
>>DG.UnselectAllCells();
>>DG.SelectedCells.Add(DG.CurrentCell);
>>DG.BeginEdit();
But I've a feeling the user would find it a bit disconcerting. The OnFocus only fires when they click on an actual cell and that may be the cell they actually want to edit? Also if there's a scrollbar and the user uses it then the OnFocus fires when they move back to the Gridprivate void XP2_GotFocus(object sender, RoutedEventArgs e) { if (!XP2.IsExpanded) { XP2.IsExpanded = true; Dispatcher.BeginInvoke(new Action(() => { DG.SelectionUnit = DataGridSelectionUnit.Cell; DG.CurrentCell = new DataGridCellInfo(DG.Items[0], DG.Columns[0]); DG.UnselectAllCells(); DG.SelectedCells.Add(DG.CurrentCell); DG.BeginEdit(); } )); } else { var v = FocusManager.GetFocusedElement(DG); if (v != e.OriginalSource) Dispatcher.BeginInvoke(new Action(() => { v.Focus(); })); } }