Default Keyboard and Mouse Behavior in the DataGrid Control
Microsoft Silverlight will reach end of support after October 2021. Learn more.
This topic describes how users can interact with the DataGrid control by using the keyboard and mouse.
Default Keyboard Behavior
The following table lists the default keyboard behavior for the DataGrid.
Note: |
---|
On a Macintosh computer, use the Command key instead of the CTRL key. |
Key or key combination |
Description |
---|---|
DOWN ARROW |
Moves the focus to the cell directly below the current cell. If the focus is in the last row, pressing the DOWN ARROW does nothing. |
UP ARROW |
Moves the focus to the cell directly above the current cell. If the focus is in the first row, pressing the UP ARROW does nothing. |
LEFT ARROW |
Moves the focus to the previous cell in the row. If the focus is in the first cell in the row, pressing the LEFT ARROW does nothing. If the focus is on a row group header, pressing the LEFT ARROW collapses the group. |
RIGHT ARROW |
Moves the focus to the next cell in the row. If the focus is in the last cell in the row, pressing the RIGHT ARROW does nothing. If the focus is on a row group header, pressing the RIGHT ARROW expands the group. |
HOME |
Moves the focus to the first cell in the current row. |
END |
Moves the focus to the last cell in the current row. |
PAGE DOWN |
Scrolls the control downward by the number of rows that are displayed. Moves the focus to the last displayed row without changing columns. If the last row is only partially displayed, scrolls the grid to fully display the last row. |
PAGE UP |
Scrolls the control upward by the number of rows that are displayed. Moves focus to the first displayed row without changing columns. If the first row is only partially displayed, scrolls the grid to fully display the first row. |
TAB |
If the current cell is in edit mode, moves the focus to the next cell in the current row. If the focus is already in the last cell of the row, commits any changes that were made and moves the focus to the first cell in the next row. If the focus is in the last cell in the control, moves the focus to the next control in the tab order of the parent container. If the current cell is not in edit mode, moves the focus to the next control in the tab order of the parent container. |
SHIFT+TAB |
If the current cell is in edit mode, moves the focus to the previous cell in the current row. If the focus is already in the first cell of the row, commits any changes that were made and moves the focus to the last cell in the previous row. If the focus is in the first cell in the control, moves the focus to the previous control in the tab order of the parent container. If the current cell is not in edit mode, moves the focus to the previous control in the tab order of the parent container. |
CTRL+DOWN ARROW |
Moves the focus to the last cell in the current column. |
CTRL+UP ARROW |
Moves the focus to the first cell in the current column. |
CTRL+RIGHT ARROW |
Moves the focus to the last cell in the current row. |
CTRL+LEFT ARROW |
Moves the focus to the first cell in the current row. |
CTRL+HOME |
Moves the focus to the first cell in the control. |
CTRL+END |
Moves the focus to the last cell in the control. |
CTRL+PAGE DOWN |
Same as PAGE DOWN. |
CTRL+PAGE UP |
Same as PAGE UP. |
F2 |
If the DataGrid.IsReadOnly property is false and the DataGridColumn.IsReadOnly property is false for the current column, puts the current cell into cell edit mode. |
ENTER |
Commits any changes to the current cell and row and moves the focus to the cell directly below the current cell. If the focus is in the last row, commits any changes without moving the focus. |
ESC |
If the control is in edit mode, cancels the edit and reverts any changes that were made in the control. If the underlying data source implements IEditableObject, pressing ESC a second time cancels edit mode for the entire row. |
BACKSPACE |
Deletes the character before the cursor when editing a cell. |
DELETE |
Deletes the character after the cursor when editing a cell. |
CTRL+ENTER |
Commits any changes to the current cell without moving the focus. |
Selection Keys
If the SelectionMode property is set to Extended, the navigation behavior does not change, but navigating with the keyboard while pressing SHIFT (including CTRL+SHIFT) will modify a multi-row selection. Before navigation starts, the control marks the current row as an anchor row. When you navigate while pressing SHIFT, the selection includes all rows between the anchor row and the current row.
The following selection keys modify multi-row selection.
SHIFT+DOWN ARROW
SHIFT+UP ARROW
SHIFT+LEFT ARROW
SHIFT+RIGHT ARROW
SHIFT+HOME
SHIFT+END
SHIFT+PAGE DOWN
SHIFT+PAGE UP
CTRL+SHIFT+DOWN ARROW
CTRL+SHIFT+UP ARROW
CTRL+SHIFT+LEFT ARROW
CTRL+SHIFT+RIGHT ARROW
CTRL+SHIFT+HOME
CTRL+SHIFT+END
CTRL+SHIFT+PAGE DOWN
CTRL+SHIFT+PAGE UP
Default Mouse Behavior
The following table lists the default mouse behavior for the DataGrid.
Note: |
---|
Clicking a cell with the left mouse button always changes the current cell. In Silverlight, clicking with the right mouse button always opens the Silverlight Configuration shortcut menu. |
Mouse action |
Description |
---|---|
Click an unselected row |
Makes the clicked row the current row. |
Click a cell in the current row |
Puts the clicked cell into edit mode. |
Drag a column header cell |
If the DataGrid.CanUserReorderColumns property is true and the DataGridColumn.CanUserReorder property is true for the current column, moves the column so that it can be dropped into a new position. |
Drag a column header separator |
If the DataGrid.CanUserResizeColumns property is true and the DataGridColumn.CanUserResize property is true for the current column, resizes the column. |
Click a column header cell |
If the DataGrid.CanUserSortColumns property is true and the DataGridColumn.CanUserSort property is true for the current column, sorts the column. Clicking the header of a column that is already sorted will reverse the sort direction of that column. Pressing the SHIFT key while clicking multiple column headers will sort by multiple columns in the order clicked. |
CTRL+click a row |
If SelectionMode is set to Extended, modifies a non-contiguous multi-row selection. If the row is already selected, deselects the row. |
SHIFT+click a row |
If SelectionMode is set to Extended, modifies a contiguous multi-row selection. |
Click a row group header expander button |
Expands or collapses the group. |
Double-click a row group header |
Expands or collapses the group. |
Mouse Selection
If the SelectionMode property is set to Extended, clicking a row while pressing CTRL or SHIFT will modify a multi-row selection.
When you click a row while pressing CTRL, the row will change its selection state while all other rows retain their current selection state.
When you click a row while pressing SHIFT, the selection includes all rows between the current row and an anchor row located at the position of the current row before the first click. Subsequent clicks while pressing SHIFT changes the current row, but not the anchor row.