0

我有一个WPF DataGrid. 用户可以编辑 中的数据cell。我想要一个event我想检查是否cell是的 in empty。用户可以使用Del Backspace Cut选项等清空数据。

给我一个event然后event handler去做。我已经尝试过了OnCellEditEnding event,但这只会在编辑完成后触发。我想在cell每次 user 时动态检查是否为空inputs

4

2 回答 2

2

每个 datagridcell 在编辑模式下都有一个文本框作为其内容。您可以在按键按下时检查该文本框中写入的文本长度(通过处​​理onKeyDownonPreviewKeyDown事件)

编辑:

使用 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
}
于 2012-11-20T05:31:37.877 回答
2

使用数据绑定

    <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 { /* ... */}
}
于 2012-11-20T06:01:27.960 回答