有没有办法将复杂的数据绑定到列的标题文本?或者,这是手动设置值并从源侦听更改事件的唯一方法?
为了记录在案,我两个都试过了
MyDataGrid.DataBindings.Add("Columns[<columnIndex>].HeaderText",MySource,"MyProperty");
和
MyDataGrid.DataBindings.Add("Columns[\"ColumnName\"].HeaderText",MySource,"MyProperty");
没有用,也没有 DataGridViewColumn DataGridViewColumnHeaderCell 有一个 DataBindings 所有物
DataGridViewColumn
DataGridViewColumnHeaderCell
DataBindings
不,列标题不支持数据绑定,因为可以理解,此元数据(大部分)是静态的。
在本例中,我只需按照您的建议手动执行(从属性读取并订阅事件以更新列标题)。
PropertyDescriptor 实现,由 TypeDescriptionProvider 或 ITypedList -或者更好,一个 IBindingList ListChanged 类型的事件 ListChangedType.PropertyDescriptorChanged 重要的 大量的工作,仅仅因为你的建议是不值得的。
PropertyDescriptor
TypeDescriptionProvider
ITypedList
IBindingList
ListChanged
ListChangedType.PropertyDescriptorChanged