0

私は持っていWPF DataGridます。ユーザーは でデータを編集できますcelleventが かどうかを確認したいということcellですempty。ユーザーは、Del Backspace Cutオプションなどを使用してデータを空にすることができます。

それをするために私にeventevent handlerを与えてください。私はすでに試してOnCellEditEnding eventいますが、これは編集が終了した場合にのみトリガーされます。cellユーザーが毎回動的に空であることを確認したいinputs

4

2 に答える 2

2

編集モードの場合、各 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
}
于 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 に答える