When certain collection updates happen, such as replacing an item or a range of items happen, then the visual state of the GridView could get out of whack as it could be reloading using the wrong item.
This happens because on Mac one must call NSTableView.BeginUpdates() before all updates are registered, then NSTableView.EndUpdates() after. Since the collection isn't actually changed when it called RemoveItem, then InsertItem, it could refresh the view using invalid state of the collection.
Now there are new virtual methods in CollectionChangedHandler for BeginUpdates() and EndUpdates() which can be forwarded to handlers in the case that the collection changed event causes multiple methods to be called.
Additionally, there are also ReplaceItem and ReplaceRange overrides in the case that replacing a single item can just refresh that row making it more efficient, and in the case of Mac will no longer make the refreshed item "slide down".
When certain collection updates happen, such as replacing an item or a range of items happen, then the visual state of the GridView could get out of whack as it could be reloading using the wrong item.
This happens because on Mac one must call
NSTableView.BeginUpdates()
before all updates are registered, thenNSTableView.EndUpdates()
after. Since the collection isn't actually changed when it calledRemoveItem
, thenInsertItem
, it could refresh the view using invalid state of the collection.Now there are new virtual methods in
CollectionChangedHandler
forBeginUpdates()
andEndUpdates()
which can be forwarded to handlers in the case that the collection changed event causes multiple methods to be called.Additionally, there are also
ReplaceItem
andReplaceRange
overrides in the case that replacing a single item can just refresh that row making it more efficient, and in the case of Mac will no longer make the refreshed item "slide down".