我什至不确定我是否正确执行此操作。但基本上我有一个由类/接口构建的对象列表。从那里,我将列表绑定到DataGridView
Windows 窗体 (C#) 上的
这里的列表是一个同步列表,它将自动更新 UI,在这种情况下DataGridView
。
现在一切正常,但现在我希望列表应该有一个动态对象,即默认情况下该对象将具有两个静态属性(ID、名称),并且在运行时用户将选择剩余的属性。这些应该绑定到数据网格。列表上的任何更新都应自动反映在网格中。
我知道,我们可以使用动态对象,但我想知道,如何解决,
datagridview.DataSource = myData; // myData is AutoUpdateList<IPersonInfo>
现在IPersonInfo
是对象的类型,需要在运行时为这个类型添加动态属性。
public class AutoUpdateList<T> : BindingList<T>
{
private ISynchronizeInvoke _SyncObject;
private Action<ListChangedEventArgs> _FireEventAction;
public AutoUpdateList()
: this(null)
{
}
public AutoUpdateList(ISynchronizeInvoke syncObject)
{
_SyncObject = syncObject;
_FireEventAction = FireEvent;
}
protected override void OnListChanged(ListChangedEventArgs args)
{
try
{
if (_SyncObject == null)
{
FireEvent(args);
}
else
{
_SyncObject.Invoke(_FireEventAction, new object[] { args });
}
}
catch (Exception)
{
// TODO: Log Here
}
}
private void FireEvent(ListChangedEventArgs args)
{
base.OnListChanged(args);
}
}
你能帮忙吗?