From c4543c4a6582579918ef57fcf268ae4fdf74017d Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Thu, 19 Jul 2018 10:01:11 +0100 Subject: [PATCH] repro performance issue on listbox resizing. --- samples/VirtualizationDemo/MainWindow.xaml | 63 ++++++++----------- .../ViewModels/MainWindowViewModel.cs | 9 +++ 2 files changed, 34 insertions(+), 38 deletions(-) diff --git a/samples/VirtualizationDemo/MainWindow.xaml b/samples/VirtualizationDemo/MainWindow.xaml index c9442af444..294ff16f8b 100644 --- a/samples/VirtualizationDemo/MainWindow.xaml +++ b/samples/VirtualizationDemo/MainWindow.xaml @@ -2,43 +2,7 @@ Title="AvaloniaUI Virtualization Test" Width="800" Height="600"> - - - - - - - - - Horiz. ScrollBar - - Vert. ScrollBar - - - - - - - - - + - + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/VirtualizationDemo/ViewModels/MainWindowViewModel.cs b/samples/VirtualizationDemo/ViewModels/MainWindowViewModel.cs index eb08ef9656..fb799742c6 100644 --- a/samples/VirtualizationDemo/ViewModels/MainWindowViewModel.cs +++ b/samples/VirtualizationDemo/ViewModels/MainWindowViewModel.cs @@ -17,6 +17,7 @@ namespace VirtualizationDemo.ViewModels private string _newItemString = "New Item"; private int _newItemIndex; private IReactiveList _items; + private IReactiveDerivedList _items2; private string _prefix = "Item"; private ScrollBarVisibility _horizontalScrollBarVisibility = ScrollBarVisibility.Auto; private ScrollBarVisibility _verticalScrollBarVisibility = ScrollBarVisibility.Auto; @@ -58,6 +59,12 @@ namespace VirtualizationDemo.ViewModels private set { this.RaiseAndSetIfChanged(ref _items, value); } } + public IReactiveDerivedList Items2 + { + get { return _items2; } + private set { this.RaiseAndSetIfChanged(ref _items2, value); } + } + public Orientation Orientation { get { return _orientation; } @@ -104,6 +111,7 @@ namespace VirtualizationDemo.ViewModels var items = Enumerable.Range(0, count) .Select(x => new ItemViewModel(x)); Items = new ReactiveList(items); + Items2 = Items.CreateDerivedCollection(c => c); } else if (count > Items.Count) { @@ -143,6 +151,7 @@ namespace VirtualizationDemo.ViewModels var items = Enumerable.Range(0, _itemCount) .Select(x => new ItemViewModel(x, _prefix)); Items = new ReactiveList(items); + Items2 = Items.CreateDerivedCollection(c => c); } private void SelectItem(int index)