我有一个简单的问题,可能有一个简单的答案。我有一个显示一些项目的 DataGrid。我希望像这样更新其中一项:
var old = (SomeClass)grid.SelectedItem;
var newItem = new SomeClass(...);
old = newItem;
//grid.Items.Refresh();
首先,示例中的代码很简单,但这是重要的一点(真正的问题是通过 Linq2Sql 更新对象,然后将旧对象设置为更新后的对象)。
无论如何,我希望对 Items.Refresh
的调用会更新网格的 UI,但事实并非如此。关于 DataGrid 如何缓存其 ItemsSource 元素,我当然遗漏了一些东西,但我想这是一个非常常见的场景。有什么想法吗?
最佳答案
您需要获取网格的 ItemSource 并更新 ItemsSource 中的正确项目。现在您正在复制所选项目并对其进行更新,因此它什么都不做。
我不确定确切的语法,但你会想要类似的东西
((IEnumerable)grid.ItemsSource)[grid.SelectedIndex] = newItem;
关于c# - 更新 DataGrid 的 ItemsSource 中的单个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5269279/