diff --git a/samples/VirtualizationTest/MainWindow.xaml b/samples/VirtualizationTest/MainWindow.xaml
index 681de0a815..e8baecc28c 100644
--- a/samples/VirtualizationTest/MainWindow.xaml
+++ b/samples/VirtualizationTest/MainWindow.xaml
@@ -7,6 +7,8 @@
Gap="4">
+
@@ -32,6 +34,11 @@
SelectedItems="{Binding SelectedItems}"
SelectionMode="Multiple"
VirtualizationMode="{Binding VirtualizationMode}">
+
+
+
+
+
diff --git a/samples/VirtualizationTest/ViewModels/MainWindowViewModel.cs b/samples/VirtualizationTest/ViewModels/MainWindowViewModel.cs
index 3e07aa54e9..eb0a7bf01e 100644
--- a/samples/VirtualizationTest/ViewModels/MainWindowViewModel.cs
+++ b/samples/VirtualizationTest/ViewModels/MainWindowViewModel.cs
@@ -17,6 +17,7 @@ namespace VirtualizationTest.ViewModels
private int _newItemIndex;
private IReactiveList _items;
private string _prefix = "Item";
+ private Orientation _orientation;
private ItemVirtualizationMode _virtualizationMode = ItemVirtualizationMode.Simple;
public MainWindowViewModel()
@@ -53,6 +54,15 @@ namespace VirtualizationTest.ViewModels
private set { this.RaiseAndSetIfChanged(ref _items, value); }
}
+ public Orientation Orientation
+ {
+ get { return _orientation; }
+ set { this.RaiseAndSetIfChanged(ref _orientation, value); }
+ }
+
+ public IEnumerable Orientations =>
+ Enum.GetValues(typeof(Orientation)).Cast();
+
public ItemVirtualizationMode VirtualizationMode
{
get { return _virtualizationMode; }
diff --git a/src/Avalonia.Controls/Presenters/ItemVirtualizerSimple.cs b/src/Avalonia.Controls/Presenters/ItemVirtualizerSimple.cs
index 2b65add3f7..381080ce4a 100644
--- a/src/Avalonia.Controls/Presenters/ItemVirtualizerSimple.cs
+++ b/src/Avalonia.Controls/Presenters/ItemVirtualizerSimple.cs
@@ -72,7 +72,10 @@ namespace Avalonia.Controls.Presenters
// offset the panel by the height of the first item.
var firstIndex = ItemCount - panel.Children.Count;
RecycleContainersForMove(firstIndex - FirstIndex);
- panel.PixelOffset = panel.Children[0].Bounds.Height;
+
+ panel.PixelOffset = VirtualizingPanel.ScrollDirection == Orientation.Vertical ?
+ panel.Children[0].Bounds.Height :
+ panel.Children[0].Bounds.Width;
}
}
}