Browse Source

Finding ancestor IScrollAnchorProvider instead ScrollViewer. (#13079)

Co-authored-by: Meloman19 <23280622+Meloman19@users.noreply.github.com>
pull/13106/head
Meloman19 3 years ago
committed by GitHub
parent
commit
1249a0da84
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 10
      src/Avalonia.Controls/VirtualizingStackPanel.cs

10
src/Avalonia.Controls/VirtualizingStackPanel.cs

@ -67,7 +67,7 @@ namespace Avalonia.Controls
private double _lastEstimatedElementSizeU = 25;
private RealizedStackElements? _measureElements;
private RealizedStackElements? _realizedElements;
private ScrollViewer? _scrollViewer;
private IScrollAnchorProvider? _scrollAnchorProvider;
private Rect _viewport = s_invalidViewport;
private Dictionary<object, Stack<Control>>? _recyclePool;
private Control? _focusedElement;
@ -211,7 +211,7 @@ namespace Avalonia.Controls
new Rect(u, 0, sizeU, finalSize.Height) :
new Rect(0, u, finalSize.Width, sizeU);
e.Arrange(rect);
_scrollViewer?.RegisterAnchorCandidate(e);
_scrollAnchorProvider?.RegisterAnchorCandidate(e);
u += orientation == Orientation.Horizontal ? rect.Width : rect.Height;
}
}
@ -229,13 +229,13 @@ namespace Avalonia.Controls
protected override void OnAttachedToVisualTree(VisualTreeAttachmentEventArgs e)
{
base.OnAttachedToVisualTree(e);
_scrollViewer = this.FindAncestorOfType<ScrollViewer>();
_scrollAnchorProvider = this.FindAncestorOfType<IScrollAnchorProvider>();
}
protected override void OnDetachedFromVisualTree(VisualTreeAttachmentEventArgs e)
{
base.OnDetachedFromVisualTree(e);
_scrollViewer = null;
_scrollAnchorProvider = null;
}
protected override void OnItemsChanged(IReadOnlyList<object?> items, NotifyCollectionChangedEventArgs e)
@ -689,7 +689,7 @@ namespace Avalonia.Controls
{
Debug.Assert(ItemContainerGenerator is not null);
_scrollViewer?.UnregisterAnchorCandidate(element);
_scrollAnchorProvider?.UnregisterAnchorCandidate(element);
var recycleKey = element.GetValue(RecycleKeyProperty);

Loading…
Cancel
Save