I want to implement this for DataGrid in WPF, not DataGridView, such that whenever an Enter key is pressed, it would go to the next line, is it possible?
I see similar solution in http://stackoverflow.com/questions/9674078/datagridview-when-i-press-enter-it-goes-to-the-next-cell, but it is for DataGridView.
How can I implement the same feature for my WPF DataGrid? thanks.
Loading
Pravin ShuklaPosted Dec 19, 2013, 4:18 AM
Please use the below code snapshot
private void dataGrid1_PreviewKeyDown(object sender, KeyEventArgs e)(rowContainer);
{
if (e.Key == Key.Enter)
{
DataGridRow rowContainer = (DataGridRow)dataGrid1.ItemContainerGenerator.ContainerFromItem(dataGrid1.CurrentItem);
if (rowContainer != null)
{
DataGridCellsPresenter presenter = GetVisualChild
int columnIndex = dataGrid1.Columns.IndexOf(dataGrid1.CurrentColumn);
DataGridCell cell = (DataGridCell)presenter.ItemContainerGenerator.ContainerFromIndex(columnIndex);
TraversalRequest request = new TraversalRequest(FocusNavigationDirection.Next);
request.Wrapped = true;
cell.MoveFocus(request);
rowContainer = (DataGridRow)dataGrid1.ItemContainerGenerator.ContainerFromItem(dataGrid1.CurrentItem);
dataGrid1.SelectedItem = dataGrid1.CurrentItem;
e.Handled = true;
dataGrid1.UpdateLayout();
}
}
}
public static T GetVisualChild(Visual parent) where T : Visual(v);
{
T child = default(T);
int numVisuals = VisualTreeHelper.GetChildrenCount(parent);
for (int i = 0; i < numVisuals; i++)
{
Visual v = (Visual)VisualTreeHelper.GetChild(parent, i);
child = v as T;
if (child == null)
{
child = GetVisualChild
}
if (child != null)
{
break;
}
}
return child;
}
Thanks
Pravin