在RowEditEnding中更改值

时间:2009-12-07 09:39:33

标签: silverlight silverlight-3.0 datagrid

更改DataGrid的RowEditEnding事件中的值

我有一个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 :(得分:0)

据我所知,“RowEditEnding”事件没有任何意义。当它被触发时,该行中的值尚未更改,您无法看到它们将被更改为什么。

“RowEditEnded”可能就是你想要的 - 我在WPF中遇到了这个问题,发现WPF DataGrid甚至没有“RowEditEnded”。由于我绑定到DataTable,我只是附加到DataTable的RowChanged事件。

另外 -

answer.Correct = false;

应该是

otherAnswer.Correct = false;