在不重新绑定的情况下将项目添加到网格的数据源

Add item to Grid's DataSource without rebinding

我的 DataGrid(Windows 表单应用程序)绑定到匿名类型项目列表。因为是基数class不知道grid到底绑定了什么匿名类型

我想访问列表并添加新项目。 我可以使用以下方法提取列表项类型:ListBindingHelper.GetListItemType

我可以使用以下方法创建完全相同类型的新项目:Activator.CreateInstance

但我找不到从数据源访问 List<anonymous> 并将创建的项目添加到列表的方法。

我当然可以这样做:

var dsList = ((IEnumerable)this.TheGrid.DataSource).OfType<object>().ToList();
dsList.Add(nItem0);
this.TheGrid.DataSource = dsList;

但它会导致重新绑定,我想避免它。只想添加 1 个新行,而不是重新绑定网格中存在的数千行。

有人可以帮忙吗?

按照 Plutonix 的建议,我将绑定更改为 BindingSource,现在我可以将 DataSource 对象转换为 BindingSource。

var dsList = this.TheGrid.DataSource as BindingSource;

并添加一个新项目

dsList.Add(nItem0);

不需要完全重新绑定。它解决了我的问题。

谢谢Plutonix的好建议。