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; } } }