问题是,当我在 datagrid 中以编程方式编辑列值并向下滚动时,这些值会在列的下一个单元格中重复,这些单元格变得可见。这似乎是虚拟化错误或“效果”,因为当我关闭它时,问题就消失了。我认为问题出在这个地方:
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();
}
有没有人见过类似的东西并知道如何处理?