I have a requirement that I want to make a datagridcolumn which only accepts numeric values(integer) ,when the user enter something other than numbers handle the textbox . I tri
I got here looking for a solution to the same problem: constraining the input into cells on a DataGrid
to be numeric. But the accepted answer did not work for me. The following did:
DataGrid
add an event handler for PreparingForCellEdit
.EditingElement
to a TextBox
and add an event handler for PreviewTextInput
to the TextBox
.PreviewTextInput
event handler set e.Handled
to true, if the input should not be allowed.The above steps work if the user clicks the cell to edit. However, if the cell is not in edit mode, the PreparingForCellEdit
event will not be called. To perform validation in that case:
DataGrid
for PreviewTextInput
.e.OriginalSource
to a DataGridCell
(exiting, if it is not a DataGridCell
), check the DataGridCell's
IsEditing
property, and if the cell is not editing set e.Handled
to true.The effect of the above is that the user will have to click into the cell in order to edit its contents and, as such, the PreparingForCellEdit
/ PreviewTextInput
combination above will be invoked for all changes to the cell's contents.