在我的WPF应用程序中,我有一个填充DataGrid的DataTable,并且可以编辑DataGrid中的单元格。 我想,在特定列中,如果用户输入十进制或二进制数字,它将自动更改为十六进制数字。 有什么想法吗?
答案 0 :(得分:0)
有很多方法可以达到您的指定要求。评论中描述的方法是处理DataGrid.CellEditEnding
event。
<DataGrid ItemsSource="{Binding Items}" CellEditEnding="DataGrid_CellEditEnding" />
从链接页面,此事件:
在提交或取消单元格编辑之前发生。
因此,在用户在任何单元格中键入值后,将引发此事件。因此,您现在需要做的就是从此事件处理程序调用转换方法:
private void DataGrid_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
{
((TextBox)e.EditingElement).Text =
ConvertToHexadecimal(((TextBox)e.EditingElement).Text);
}
private string ConvertToHexadecimal(string input)
{
int number = 0;
bool isInputInteger = int.TryParse(input, out number);
return isInputInteger ? number.ToString("X") : input;
}