数据网格单元格-转换十进制和二进制数十六进制

本文关键字:十进制 二进制数 十六进制 转换 数据网 网格 单元格 数据 | 更新日期: 2023-09-27 18:08:21

在我的WPF应用程序中,我有一个填充DataGrid的数据表,并且有编辑DataGrid中的单元格的能力。我希望,在特定的列中,如果用户输入一个十进制或二进制数,它将自动更改为十六进制数。什么好主意吗?

数据网格单元格-转换十进制和二进制数十六进制

有许多方法可以达到您指定的需求。注释中描述的方法是处理DataGrid.CellEditEnding事件。

<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; 
}