- GTK: https://en.wikibooks.org/wiki/GTK%2B_By_Example/Tree_View/Custom_Models
- Cocoa: https://developer.apple.com/documentation/appkit/nstableviewdatasource
- UWP: ListView.ItemsSourcecan be set to any object implementingIEnumerable. ImplementingIListenabled virtualization for better performance. See https://docs.microsoft.com/en-us/uwp/api/Windows.UI.Xaml.Controls.ListView.
- Qt: Implement QAbstractItemModel, see https://doc.qt.io/qt-5/qabstractitemmodel.html
- GTK: GtkTreeModelIfacehas signals to let the view know rows were added, removed, updated, ...: https://developer.gnome.org/gtk3/stable/GtkTreeModel.html
- Cocoa: NSTableView::reloadData& friends: https://developer.apple.com/documentation/appkit/nstableview/1528382-reloaddata
- UWP: the items source should additionally implement IListandINotifyCollectionChanged.ISupportIncrementalLoadingcan be implemented to support incremental loading. See "data virtualization" under Remarks section in https://docs.microsoft.com/en-us/uwp/api/Windows.UI.Xaml.Controls.ListView#Remarks. Individual items will need to implementINotifyPropertyChangedto update the bindings to individual subcontrols in item template in the listview.
- Qt: Emit signals defined on QAbstractItemModelto notify view that rows have changed:rowsInserted,rowsMoved,rowsRemoved, ...
https://developer.apple.com/documentation/appkit/nstableview/1534147-notenumberofrowschanged