Изменение значений в RowEditEnding - PullRequest
0 голосов
/ 07 декабря 2009

Изменение значений в событии RowEditEnding DataGrid

У меня есть DataGrid со столбцом флажка. Только у одной строки может быть установлен флажок. Если пользователь установит новый флажок, все остальные флажки должны быть автоматически сняты, аналогично переключателю. Я пытался реализовать это поведение в событии RowEditEnding, но если я изменю значения объектов в этом событии, редактирование будет отменено? т.е. флажки оставлены без изменений. Если флажок снят, флажки обновляются, и редактирование происходит нормально. Вот код, который я использую:

private void grdQuestionAnswers_RowEditEnded(object sender, System.Windows.Controls.DataGridRowEditEndedEventArgs e)
{
    if (DataGridEditAction.Commit == e.EditAction)
    {
        Answer answer = (Answer)e.Row.DataContext;
        if (answer.Correct == true)
        {
            foreach (Answer otherAnswer in grdQuestionAnswers.ItemsSource)
            {
                if (otherAnswer != answer)
                {
                    answer.Correct = false;
                }
            }
        }
    }
}

1 Ответ

0 голосов
/ 27 ноября 2010

Насколько я могу судить, событие "RowEditEnding" не имеет смысла. Когда он запускается, значения в этой строке еще не были изменены, и вы не можете видеть, на что они будут изменены.

«RowEditEnded» может быть тем, что вы хотите - я столкнулся с этой проблемой в WPF и обнаружил, что в WPF DataGrid даже нет «RowEditEnded». Поскольку я был привязан к DataTable, я просто прикрепил его к событию RowChanged в DataTable.

Также -

answer.Correct = false;

должно быть

otherAnswer.Correct = false;
...