Проблема в том, что когда я программно редактирую значения столбца в сетке данных и прокручиваю вниз, эти значения повторяются в следующих ячейках столбца, которые становятся видимыми. Это похоже на ошибку или «эффект» виртуализации, поскольку, когда я ее выключаю, проблема исчезает. Думаю проблема в этом месте:
public void EditedCell(object oItem, string oColumnName, ref List<string> lErrors, object newValue = null)
{
DataGridRow dgRow = dgDati.ItemContainerGenerator.ContainerFromItem(oItem) as DataGridRow;
/* In other places, when I call EditedCell(DataGridRow, ...) it works fine.
The problem shows up only when I call EditedCell(object oItem, ...) */
EditedCell(dgRow, oColumnName, ref lErrors, newValue);
}
Это экран проблемы. Желтые ячейки программно изменены, и из-за этой проблемы отображаются другие ячейки, содержащие 0000. Когда я читаю данные из DataSource, в DataRows нет этих значений 0000:
Также, чтобы установить значение ячейки, я устанавливаю элементы управления ячейкой в ячейке и значение DataRow, чтобы изменить значение и правильно отобразить его:
if (oElement.GetType() == typeof(TextBox))
{
(oElement as TextBox).Text = newValue.ToString();
}
if (oElement.GetType() == typeof(TextBlock))
{
(oElement as TextBlock).Text = newValue.ToString();
}
Кто-нибудь видел что-то подобное и знает, как с этим бороться?
Bind
переходим к элементам управления пользовательского интерфейса и манипулируем данными... таким образом у вас будет гораздо меньше проблем. - person Sheridan   schedule 16.10.2013