2

AddNewRecord 行に値を入力した後、XamDataGrid の行の外側をクリックすると、その行がコレクションに追加されるように見えます。

マウス クリックで新しい行がコレクションに追加されないようにするにはどうすればよいですか。

親切に助けて

4

2 に答える 2

2

AddNewRecord の外側をクリックすると、レコードの編集モードが終了し、変更があった場合はその時点でコミットされます。つまり、新しいレコードが追加されます。グリッド内の別のレコードをクリックするのではなく、Enter キーを押したときにのみレコードをコミットできるようにする場合は、次のロジックを使用して、マウスの左ボタンを処理済みとして設定できます。

private bool editingAddNewRecord = false;
void XamDataGrid1_EditModeEnded(object sender, Infragistics.Windows.DataPresenter.Events.EditModeEndedEventArgs e)
{
    this.editingAddNewRecord = false;
}

void XamDataGrid1_EditModeStarted(object sender, Infragistics.Windows.DataPresenter.Events.EditModeStartedEventArgs e)
{
    this.editingAddNewRecord = e.Cell.Record.IsAddRecord;
}

void XamDataGrid1_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    if (editingAddNewRecord)
    {
        DataRecordPresenter drp = Infragistics.Windows.Utilities.GetAncestorFromType(e.OriginalSource as DependencyObject, typeof(DataRecordPresenter), true) as DataRecordPresenter;
        if (!(drp != null && drp.IsAddRecord))
        {
            e.Handled = true;
        }
    }           
}
于 2012-12-31T20:56:07.560 に答える