how to set focus to particular cell of WPF toolkit datagrid

后端 未结 5 1321
再見小時候
再見小時候 2020-12-29 08:58

I am using WPF toolkit provided DataGrid control to display product list along with its OpenStock, Description etc. In this DataGrid i have set OpenStock column to editable

相关标签:
5条回答
  • 2020-12-29 09:21

    You need to set the current cell to the one you want edited and then call BeginEdit in your Loaded handler:

    dataGrid1.CurrentCell = new DataGridCellInfo(
        dataGrid1.Items[0], dataGrid1.Columns[3]);
    dataGrid1.BeginEdit();
    

    If you give your DataGridTextColumn a name in XAML you can use that name rather than Columns[3].

    0 讨论(0)
  • 2020-12-29 09:21

    Use this code to move the scroll view to a specific cell:

    dgv.ScrollIntoView(dgv.Items[row], dgv.Columns[col]);
    
    0 讨论(0)
  • 2020-12-29 09:25

    I have datagrid with TextBox in DataTemplate of DataGridTemplateColumn. Also i am using Enter instead of Tab to focus TextBox

    private void DataGrid_PreviewKeyDown(object sender, KeyEventArgs e)
    {
        if (e.Key == Key.Enter)
        {
            e.Handled = true;
            var TabKey = new KeyEventArgs(e.KeyboardDevice, e.InputSource, e.Timestamp, Key.Tab);
            TabKey.RoutedEvent = Keyboard.KeyDownEvent;
            InputManager.Current.ProcessInput(TabKey);
        }
    }
    

    I solve focus problem with combination of this code:

    dataGrid.Focus();
    //In case of more columns
    //dataGrid.CurrentCell = new DataGridCellInfo(dataGrid.Items[0], dataGrid.Columns[1]);
    dataGrid.BeginEdit();
    (Keyboard.FocusedElement as UIElement).MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
    
    0 讨论(0)
  • 2020-12-29 09:33

    This worked for me:

    DataGridCellInfo dataGridCellInfo = new DataGridCellInfo(dataGrid1.Items[sampleRowIndex], dataGrid1.Columns[sampleColumnIndex]);
    dataGrid1.SelectedCells.Clear();
    dataGrid1.SelectedCells.Add(dataGridCellInfo);
    

    This will select the cell you want to put the focus on.

    A DataGridCellInfo object provides information about a cell and the data item that is associated with the cell. It is used instead of a reference to the actual DataGridCell object when the DataGrid control gets a cell, for example in the CurrentCell or SelectedCells properties. Check here for more info.

    0 讨论(0)
  • 2020-12-29 09:37

    Use below function, it will work.

    private void SetFocusOnGrid(DataGrid grid, int index)
    {
        grid.ScrollIntoView(grid.Items.GetItemAt(index));
        grid.SelectionMode = DataGridSelectionMode.Single;
        grid.SelectionUnit = DataGridSelectionUnit.FullRow;
        grid.SelectedIndex = index;
    
        DataGridRow row = (DataGridRow)grid.ItemContainerGenerator.ContainerFromIndex(index);
        row.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
    }  
    
    0 讨论(0)
提交回复
热议问题