diff --git a/src/Avalonia.Controls/Repeater/ViewportManager.cs b/src/Avalonia.Controls/Repeater/ViewportManager.cs index 6677b8fea7..57ac1cf2a5 100644 --- a/src/Avalonia.Controls/Repeater/ViewportManager.cs +++ b/src/Avalonia.Controls/Repeater/ViewportManager.cs @@ -288,6 +288,7 @@ namespace Avalonia.Controls private void OnLayoutUpdated(object sender, EventArgs args) { _owner.LayoutUpdated -= OnLayoutUpdated; + _layoutUpdatedSubscribed = false; if (_managingViewportDisabled) { return; @@ -424,6 +425,7 @@ namespace Avalonia.Controls if (_layoutUpdatedSubscribed) { _owner.LayoutUpdated -= OnLayoutUpdated; + _layoutUpdatedSubscribed = false; } } @@ -538,7 +540,12 @@ namespace Avalonia.Controls private void ScrollContentPresenterPreArrange(object sender, EventArgs e) { var scp = (ScrollContentPresenter)sender; - OnEffectiveViewportChanged(new Rect((Point)scp.Offset, scp.Viewport)); + var effectiveViewport = new Rect((Point)scp.Offset, scp.Viewport); + + if (effectiveViewport != _visibleWindow) + { + OnEffectiveViewportChanged(effectiveViewport); + } } private class ScrollerInfo