我有一个WPF
DataGrid
. 用户可以编辑 中的数据cell
。我想要一个event
我想检查是否cell
是的 in empty
。用户可以使用Del
Backspace
Cut
选项等清空数据。
给我一个event
然后event handler
去做。我已经尝试过了OnCellEditEnding
event
,但这只会在编辑完成后触发。我想在cell
每次 user 时动态检查是否为空inputs
。
每个 datagridcell 在编辑模式下都有一个文本框作为其内容。您可以在按键按下时检查该文本框中写入的文本长度(通过处理onKeyDown或onPreviewKeyDown事件)
编辑:
使用 PreparingCellForEdit 事件,像这样:
void MainDataGrid_PreparingCellForEdit(object sender, DataGridPreparingCellForEditEventArgs e)
{
TextBox tb = e.Column.GetCellContent(e.Row) as TextBox;
tb.TextChanged+=new TextChangedEventHandler(tb_TextChanged);
}
void tb_TextChanged(object sender, TextChangedEventArgs e)
{
//here, something changed the cell's text. you can do what is neccesary
}
使用数据绑定:
<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding}">
<DataGrid.Columns>
<DataGridTextColumn Header="First Name" Binding="{Binding FirstName, UpdateSourceTrigger=PropertyChanged}"/>
<DataGridTextColumn Header="Last Name" Binding="{Binding LastName, UpdateSourceTrigger=PropertyChanged}"/>
</DataGrid.Columns>
</DataGrid>
其中 items source 是一系列对象,如下所示:
public class Customer : INotifyPropertyChanged
{
public string FirstName
{
get { return firstName; }
set
{
if (string.IsNullOrEmpty(value))
{
// oops!
}
if (firstName != value)
{
firstName = value;
OnPropertyChanged("FirstName"); // raises INotifyPropertyChanged.PropertyChanged
}
}
}
private string firstName;
public string LastName { /* ... */}
}