|
|
|
@ -19,6 +19,7 @@ namespace Avalonia.Controls |
|
|
|
private double _averageItemSize; |
|
|
|
private int _averageCount; |
|
|
|
private double _pixelOffset; |
|
|
|
private double _crossAxisOffset; |
|
|
|
private bool _forceRemeasure; |
|
|
|
|
|
|
|
bool IVirtualizingPanel.IsFull |
|
|
|
@ -60,6 +61,20 @@ namespace Avalonia.Controls |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
double IVirtualizingPanel.CrossAxisOffset |
|
|
|
{ |
|
|
|
get { return _crossAxisOffset; } |
|
|
|
|
|
|
|
set |
|
|
|
{ |
|
|
|
if (_crossAxisOffset != value) |
|
|
|
{ |
|
|
|
_crossAxisOffset = value; |
|
|
|
InvalidateArrange(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private IVirtualizingController Controller => ((IVirtualizingPanel)this).Controller; |
|
|
|
|
|
|
|
void IVirtualizingPanel.ForceInvalidateMeasure() |
|
|
|
@ -140,7 +155,11 @@ namespace Avalonia.Controls |
|
|
|
{ |
|
|
|
if (orientation == Orientation.Vertical) |
|
|
|
{ |
|
|
|
rect = new Rect(rect.X, rect.Y - _pixelOffset, rect.Width, rect.Height); |
|
|
|
rect = new Rect( |
|
|
|
rect.X - _crossAxisOffset, |
|
|
|
rect.Y - _pixelOffset, |
|
|
|
rect.Width, |
|
|
|
rect.Height); |
|
|
|
child.Arrange(rect); |
|
|
|
|
|
|
|
if (rect.Y >= _availableSpace.Height) |
|
|
|
@ -157,7 +176,11 @@ namespace Avalonia.Controls |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
rect = new Rect(rect.X - _pixelOffset, rect.Y, rect.Width, rect.Height); |
|
|
|
rect = new Rect( |
|
|
|
rect.X - _pixelOffset, |
|
|
|
rect.Y - _crossAxisOffset, |
|
|
|
rect.Width, |
|
|
|
rect.Height); |
|
|
|
child.Arrange(rect); |
|
|
|
|
|
|
|
if (rect.X >= _availableSpace.Width) |
|
|
|
|