c# - 更新 DataGrid 的 ItemsSource 中的单个项目

标签 c# wpf datagrid

我有一个简单的问题,可能有一个简单的答案。我有一个显示一些项目的 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/

相关文章:

c# - C# 属性的最具创新性的用法

c# - 使用 Interop 从 DataGrid 导出到 Excel 太慢

javascript - 选项卡/垂直框布局

wpf - 将格式设置为 DataGrid -WPF 中显示的数据

datagrid - Dojo DataGrid - 从格式化程序获取数据存储项?

c# - Lambda 或 Linq 方法来搜索多个参数

c# - 将数据表复制到 Excel

wpf - 无法在 Windows 8(WPF、.NET 4.0)下横向打印文档

c# - 将格式 xxxxxxxxxx 更改为 xxx-xxx-xxxx

c# - 找不到类型或命名空间名称 'SignInManager'(是否缺少 using 指令或程序集引用?)