- GTK: https://en.wikibooks.org/wiki/GTK%2B_By_Example/Tree_View/Custom_Models
- Cocoa: https://developer.apple.com/documentation/appkit/nstableviewdatasource
- UWP:
ListView.ItemsSource
can be set to any object implementingIEnumerable
. ImplementingIList
enabled 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:
GtkTreeModelIface
has 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
IList
andINotifyCollectionChanged
.ISupportIncrementalLoading
can 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 implementINotifyPropertyChanged
to update the bindings to individual subcontrols in item template in the listview. - Qt: Emit signals defined on
QAbstractItemModel
to notify view that rows have changed:rowsInserted
,rowsMoved
,rowsRemoved
, ...
https://developer.apple.com/documentation/appkit/nstableview/1534147-notenumberofrowschanged