diff --git a/tests/Avalonia.Controls.UnitTests/ContextMenuTests.cs b/tests/Avalonia.Controls.UnitTests/ContextMenuTests.cs
index 5a47a86e51..a54b93cfff 100644
--- a/tests/Avalonia.Controls.UnitTests/ContextMenuTests.cs
+++ b/tests/Avalonia.Controls.UnitTests/ContextMenuTests.cs
@@ -1,7 +1,10 @@
using System;
using Avalonia.Input;
+using Avalonia.Markup.Xaml;
+using Avalonia.Markup.Xaml.MarkupExtensions;
using Avalonia.Platform;
using Avalonia.UnitTests;
+using Castle.DynamicProxy.Generators;
using Moq;
using Xunit;
@@ -168,6 +171,90 @@ namespace Avalonia.Controls.UnitTests
}
}
+ [Fact]
+ public void Context_Menu_In_Resources_Can_Be_Shared()
+ {
+ using (Application())
+ {
+ var xaml = @"
+
+
+
+
+
+
+
+
+
+
+
+";
+
+ var loader = new AvaloniaXamlLoader();
+ var window = (Window)loader.Load(xaml);
+ var target1 = window.Find("target1");
+ var target2 = window.Find("target2");
+ var mouse = new MouseTestHelper();
+
+ Assert.NotNull(target1.ContextMenu);
+ Assert.NotNull(target2.ContextMenu);
+ Assert.Same(target1.ContextMenu, target2.ContextMenu);
+
+ window.Show();
+
+ var menu = target1.ContextMenu;
+ mouse.Click(target1, MouseButton.Right);
+ Assert.True(menu.IsOpen);
+ mouse.Click(target2, MouseButton.Right);
+ Assert.True(menu.IsOpen);
+ }
+ }
+
+ [Fact]
+ public void Context_Menu_Can_Be_Set_In_Style()
+ {
+ using (Application())
+ {
+ var xaml = @"
+
+
+
+
+
+
+
+
+
+";
+
+ var loader = new AvaloniaXamlLoader();
+ var window = (Window)loader.Load(xaml);
+ var target1 = window.Find("target1");
+ var target2 = window.Find("target2");
+ var mouse = new MouseTestHelper();
+
+ Assert.NotNull(target1.ContextMenu);
+ Assert.NotNull(target2.ContextMenu);
+ Assert.Same(target1.ContextMenu, target2.ContextMenu);
+
+ window.Show();
+
+ var menu = target1.ContextMenu;
+ mouse.Click(target1, MouseButton.Right);
+ Assert.True(menu.IsOpen);
+ mouse.Click(target2, MouseButton.Right);
+ Assert.True(menu.IsOpen);
+ }
+ }
+
[Fact(Skip = "The only reason this test was 'passing' before was that the author forgot to call Window.ApplyTemplate()")]
public void Cancelling_Closing_Leaves_ContextMenuOpen()
{