diff --git a/src/Avalonia.Controls/Repeater/ViewManager.cs b/src/Avalonia.Controls/Repeater/ViewManager.cs index 3e09a5b3ee..51c14d47d6 100644 --- a/src/Avalonia.Controls/Repeater/ViewManager.cs +++ b/src/Avalonia.Controls/Repeater/ViewManager.cs @@ -581,13 +581,16 @@ namespace Avalonia.Controls private bool ClearElementToPinnedPool(IControl element, VirtualizationInfo virtInfo, bool isClearedDueToCollectionChange) { - if (_isDataSourceStableResetPending) + bool moveToPinnedPool = + !isClearedDueToCollectionChange && virtInfo.IsPinned; + + if (moveToPinnedPool) { - _resetPool.Add(element); - virtInfo.MoveOwnershipToUniqueIdResetPoolFromLayout(); + _pinnedPool.Add(new PinnedElementInfo(element)); + virtInfo.MoveOwnershipToPinnedPool(); } - return _isDataSourceStableResetPending; + return moveToPinnedPool; } private void UpdateFocusedElement()