diff --git a/tests/HeadlessTest.Ursa/Controls/AnchorTests/TestView2.axaml b/tests/HeadlessTest.Ursa/Controls/AnchorTests/TestView2.axaml
new file mode 100644
index 0000000..70cb90c
--- /dev/null
+++ b/tests/HeadlessTest.Ursa/Controls/AnchorTests/TestView2.axaml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/HeadlessTest.Ursa/Controls/AnchorTests/TestView2.axaml.cs b/tests/HeadlessTest.Ursa/Controls/AnchorTests/TestView2.axaml.cs
new file mode 100644
index 0000000..23378af
--- /dev/null
+++ b/tests/HeadlessTest.Ursa/Controls/AnchorTests/TestView2.axaml.cs
@@ -0,0 +1,46 @@
+using System.Collections.ObjectModel;
+using Avalonia;
+using Avalonia.Controls;
+using Avalonia.Markup.Xaml;
+using CommunityToolkit.Mvvm.ComponentModel;
+
+namespace HeadlessTest.Ursa.Controls.AnchorTests;
+
+public partial class TestView2 : UserControl
+{
+ public TestView2()
+ {
+ InitializeComponent();
+ DataContext = new AnchorDemoViewModel();
+ }
+}
+
+public partial class AnchorDemoViewModel: ObservableObject
+{
+ public List AnchorItems { get; } = new()
+ {
+ new AnchorItemViewModel { AnchorId = "anchor1", Header = "Anchor 1" },
+ new AnchorItemViewModel { AnchorId = "anchor2", Header = "Anchor 2" },
+ new AnchorItemViewModel
+ {
+ AnchorId = "anchor3", Header = "Anchor 3",
+ Children =
+ [
+ new AnchorItemViewModel() { AnchorId = "anchor3-1", Header = "Anchor 3.1" },
+ new AnchorItemViewModel() { AnchorId = "anchor3-2", Header = "Anchor 3.2" },
+ new AnchorItemViewModel() { AnchorId = "anchor3-3", Header = "Anchor 3.3" }
+ ]
+ },
+ new AnchorItemViewModel { AnchorId = "anchor4", Header = "Anchor 4" },
+ new AnchorItemViewModel { AnchorId = "anchor5", Header = "Anchor 5" },
+ new AnchorItemViewModel { AnchorId = "anchor6", Header = "Anchor 6" },
+ new AnchorItemViewModel { AnchorId = "anchor7", Header = "Anchor 7" },
+ };
+}
+
+public partial class AnchorItemViewModel: ObservableObject
+{
+ [ObservableProperty] private string? _anchorId;
+ [ObservableProperty] private string? _header;
+ public ObservableCollection? Children { get; set; }
+}
\ No newline at end of file
diff --git a/tests/HeadlessTest.Ursa/Controls/AnchorTests/Tests.cs b/tests/HeadlessTest.Ursa/Controls/AnchorTests/Tests.cs
index 99a091d..2e57d4a 100644
--- a/tests/HeadlessTest.Ursa/Controls/AnchorTests/Tests.cs
+++ b/tests/HeadlessTest.Ursa/Controls/AnchorTests/Tests.cs
@@ -4,6 +4,7 @@ using Avalonia.Headless;
using Avalonia.Headless.XUnit;
using Avalonia.Input;
using Avalonia.Threading;
+using Avalonia.VisualTree;
using Ursa.Controls;
namespace HeadlessTest.Ursa.Controls.AnchorTests;
@@ -39,7 +40,7 @@ public class Tests
Dispatcher.UIThread.RunJobs();
await Task.Delay(800);
Assert.True(item4.IsSelected);
- Assert.Equal(300.0 * 3, scrollViewer.Offset.Y, 1.0);
+ Assert.Equal(300.0 * 3, scrollViewer.Offset.Y, 50.0);
}
[AvaloniaFact]
@@ -79,4 +80,18 @@ public class Tests
Assert.True(item2.IsSelected);
Assert.False(item4.IsSelected);
}
+
+ [AvaloniaFact]
+ public void MVVM_Support()
+ {
+ var window = new Window();
+ var view = new TestView2();
+ window.Content = view;
+ window.Show();
+ Dispatcher.UIThread.RunJobs();
+ var items = window.GetVisualDescendants().OfType().ToList();
+ Assert.NotEmpty(items);
+ Assert.Equal(10, items.Count);
+
+ }
}
\ No newline at end of file