繁体   English   中英

绑定到另一个绑定列表中的项目的属性

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM