diff --git a/samples/AvaloniaSample/VisualTest/VirtualizationTest/View.axaml b/samples/AvaloniaSample/VisualTest/VirtualizationTest/View.axaml
new file mode 100644
index 000000000..fd2bfd3a3
--- /dev/null
+++ b/samples/AvaloniaSample/VisualTest/VirtualizationTest/View.axaml
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/AvaloniaSample/VisualTest/VirtualizationTest/View.axaml.cs b/samples/AvaloniaSample/VisualTest/VirtualizationTest/View.axaml.cs
new file mode 100644
index 000000000..d05859965
--- /dev/null
+++ b/samples/AvaloniaSample/VisualTest/VirtualizationTest/View.axaml.cs
@@ -0,0 +1,24 @@
+using Avalonia.Controls;
+using Avalonia.Markup.Xaml;
+using LiveChartsCore.SkiaSharpView.Avalonia;
+
+namespace AvaloniaSample.VisualTest.VirtualizationTest;
+
+public partial class View : UserControl
+{
+ public View()
+ {
+ InitializeComponent();
+ }
+
+ public CartesianChart Chart1 => this.Find("chart1")!;
+ public CartesianChart Chart2 => this.Find("chart2")!;
+ public void OpenTab1() => this.Find("tabs")!.SelectedIndex = 0;
+ public void OpenTab2() => this.Find("tabs")!.SelectedIndex = 1;
+ public void ScrollToChart() => ((ScrollViewer)this.Find("tabs")!.SelectedContent!).ScrollToEnd();
+
+ private void InitializeComponent()
+ {
+ AvaloniaXamlLoader.Load(this);
+ }
+}
diff --git a/tests/SharedUITests/AvaloniaTests.cs b/tests/SharedUITests/AvaloniaTests.cs
new file mode 100644
index 000000000..c8b6dce00
--- /dev/null
+++ b/tests/SharedUITests/AvaloniaTests.cs
@@ -0,0 +1,37 @@
+#if AVALONIA_UI_TESTING
+
+using Factos;
+using SharedUITests.Helpers;
+using Xunit;
+
+namespace SharedUITests;
+
+public class AvaloniaTests
+{
+ public AppController App => AppController.Current;
+
+ // based on:
+ // https://github.com/Live-Charts/LiveCharts2/issues/1986
+ // ensure charts load when avalonia virtualization is on.
+ [AppTestMethod]
+ public async Task TabControlScrollViewerRendersAfterTabSwitch()
+ {
+ var sut = await App.NavigateTo();
+
+ // open the second tab, scroll to end and ensure the chart is loaded.
+ sut.OpenTab2();
+ await Task.Delay(1000);
+ sut.ScrollToChart();
+ await Task.Delay(1000);
+ Assert.ChartIsLoaded(sut.Chart2);
+
+ // now open the first tab, scroll to end and ensure the chart is loaded.
+ sut.OpenTab1();
+ await Task.Delay(1000);
+ sut.ScrollToChart();
+ await Task.Delay(1000);
+ Assert.ChartIsLoaded(sut.Chart1);
+ }
+}
+
+#endif