Я использую DataGridView в WPF. В случае RowEditEnding я получаю старую строку (до редактирования заканчивается), а затем вызвать метод с помощью диспетчера, чтобы получить новую строку (после редактирования)Почему диспетчер ведет себя таким образом, когда я передаю параметр?
private void myGrid_RowEditEnding(object sender, DataGridRowEditEndingEventArgs e)
{
DataRowView oldRowView = e.Row.Item as DataRowView;
DataRow oldRow = oldRowView.Row;
//When I put a breakpoint before the dispatcher is called, oldRow has the old row values.
Dispatcher.BeginInvoke(new Action(() => OnRowEdit(oldRow, e)), System.Windows.Threading.DispatcherPriority.Background);
//I have now passed the old row to OnRowEdit
}
void OnRowEdit(DataRow oldRow, DataGridRowEditEndingEventArgs e)
{
//Here oldRow has new row values.
}
пункта, массив из oldRow, прежде чем я вызвать метод и массив после того, как я вызвал метод, не совпадают. Что может быть причиной этого?
Это, вероятно, связано с использованием вашего делегата действий и захвата переменной в методе. –
Может быть. Все еще не понимаю, почему это происходит. На данный момент я использую глобальную переменную. – nan
Я отредактировал ваш заголовок. Пожалуйста, смотрите: «Если вопросы включают« теги »в их названиях?] (Http://meta.stackexchange.com/questions/19190/), где консенсус« нет, они не должны ». –