private void TableStructureChangedEventHandler(object sender, ItemChangedEventArgs e) { ITableColumn column = e.ItemIndex >= 0 ? (ITableColumn)_table.Columns[e.ItemIndex] : null; switch (e.ChangeType) { case ItemChangeType.ItemAdded: _columnToPropertyMap[column] = new TableDataPropertyDescriptor(this, column); NotifyListChanged(new ListChangedEventArgs(ListChangedType.PropertyDescriptorAdded, -1)); break; case ItemChangeType.ItemChanged: _columnToPropertyMap[column] = new TableDataPropertyDescriptor(this, column); NotifyListChanged(new ListChangedEventArgs(ListChangedType.PropertyDescriptorChanged, -1)); break; case ItemChangeType.ItemRemoved: _columnToPropertyMap.Remove(column); NotifyListChanged(new ListChangedEventArgs(ListChangedType.PropertyDescriptorDeleted, -1)); break; case ItemChangeType.ItemInserted: case ItemChangeType.Reset: _columnToPropertyMap.Clear(); NotifyListChanged(new ListChangedEventArgs(ListChangedType.Reset, -1)); break; } }
public TableAdapter(ITable table) { _table = table; _table.Items.ItemsChanged += TableDataChangedEventHandler; _table.Columns.ItemsChanged += TableStructureChangedEventHandler; // init map of columns to property descriptors _columnToPropertyMap = new Dictionary <ITableColumn, TableDataPropertyDescriptor>(); foreach (ITableColumn column in _table.Columns) { _columnToPropertyMap[column] = new TableDataPropertyDescriptor(this, column); } }