[英]Binding to a property of an item from another bound list
我有一个验证对象列表 - 验证。
public class Validation
{
public IList<KeyValuePair<string, string>> Arguments
{ //(...) }
}
在表单上有一个绑定到验证列表的列表和一个绑定到Arguments来自验证列表的当前验证列表的 DataGridView。 我允许用户在对话框 window 中编辑选定的验证object。用户可以修改Arguments集合。 关闭 window 后,DataGridView 中显示的项目应该会刷新。 他们没有。 此外,如果Arguments列表在编辑后为空,则会抛出 IndexOutOfRangeException。
我怎样才能让它发挥作用?
有几个重要的数据绑定接口; 特别是IBindingList
,它具有DataGridView
可以侦听的ListChanged
事件。
是否可以将具体列表更改为BindingList<T>
? 那应该免费给你大部分吗? 您不需要更改返回类型,因为BindingList<T>: IList<T>
,而DataGridView
只知道实际的 object (它并不关心您将其称为IList<T>
)。
另一个实用的选项是简单地重置DataGridView
上的数据绑定——也许将DataSource
设置为null
然后返回:
object tmp = grid.DataSource;
grid.DataSource = null;
grid.DataSource = tmp; // low-tech data-source reset
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.