public void UpdateColumn(ListViewColumn col) { Editable = true; var hc = new NSTableHeaderCell { Title = col.Title ?? string.Empty }; HeaderCell = hc; HeaderCell.Alignment = col.Alignment.ToNSTextAlignment(); DataView = CellUtil.CreateCellView(context, backend, col.Views, backend.Columns.IndexOf(this)); DataView.Identifier = Identifier; UpdateCachedViews(col.Views); if (col.CanResize) { ResizingMask |= NSTableColumnResizing.UserResizingMask; } else { ResizingMask &= ~NSTableColumnResizing.UserResizingMask; } if (col.Expands) { ResizingMask |= NSTableColumnResizing.Autoresizing; } else { ResizingMask &= ~NSTableColumnResizing.Autoresizing; } SizeToFit(); TableView?.InvalidateIntrinsicContentSize(); }
public void UpdateColumn(ListViewColumn col, ListViewColumnChange change) { if (TableView == null) { throw new InvalidOperationException("Add the column to a table first"); } switch (change) { case ListViewColumnChange.CanResize: if (col.CanResize) { ResizingMask |= NSTableColumnResizing.UserResizingMask; } else { ResizingMask &= ~NSTableColumnResizing.UserResizingMask; } break; case ListViewColumnChange.Expanding: if (col.Expands) { ResizingMask |= NSTableColumnResizing.Autoresizing; } else { ResizingMask &= ~NSTableColumnResizing.Autoresizing; } break; case ListViewColumnChange.Cells: DataView = CellUtil.CreateCellView(context, backend, col.Views, backend.Columns.IndexOf(this)); DataView.Identifier = Identifier; UpdateCachedViews(col.Views); TableView.ReloadData(); break; case ListViewColumnChange.Title: HeaderCell.Title = col.Title ?? string.Empty; if (!col.CanResize) { SizeToFit(); } break; case ListViewColumnChange.Alignment: HeaderCell.Alignment = col.Alignment.ToNSTextAlignment(); break; } }