diff --git a/demo/Ursa.Demo/Pages/NavMenuDemo.axaml b/demo/Ursa.Demo/Pages/NavMenuDemo.axaml
index e9760a2..05edc59 100644
--- a/demo/Ursa.Demo/Pages/NavMenuDemo.axaml
+++ b/demo/Ursa.Demo/Pages/NavMenuDemo.axaml
@@ -11,46 +11,46 @@
x:CompileBindings="True"
x:DataType="vm:NavMenuDemoViewModel"
mc:Ignorable="d">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/demo/Ursa.Demo/ViewModels/NavMenuDemoViewModel.cs b/demo/Ursa.Demo/ViewModels/NavMenuDemoViewModel.cs
index 6aa42ac..f7dc981 100644
--- a/demo/Ursa.Demo/ViewModels/NavMenuDemoViewModel.cs
+++ b/demo/Ursa.Demo/ViewModels/NavMenuDemoViewModel.cs
@@ -13,7 +13,12 @@ public class NavMenuDemoViewModel: ObservableObject
{
new MenuItem { Header = "Introduction" , Children =
{
- new MenuItem() { Header = "Getting Started" },
+ new MenuItem() { Header = "Getting Started", Children =
+ {
+ new MenuItem() { Header = "Code of Conduct" },
+ new MenuItem() { Header = "How to Contribute" },
+ new MenuItem() { Header = "Development Workflow" },
+ }},
new MenuItem() { Header = "Design Principles" },
new MenuItem() { Header = "Contributing", Children =
{
diff --git a/src/Ursa.Themes.Semi/Controls/NavMenu.axaml b/src/Ursa.Themes.Semi/Controls/NavMenu.axaml
index 918bdc1..2f24300 100644
--- a/src/Ursa.Themes.Semi/Controls/NavMenu.axaml
+++ b/src/Ursa.Themes.Semi/Controls/NavMenu.axaml
@@ -7,7 +7,9 @@
-
+
+
+
@@ -15,19 +17,22 @@
-
+
-
+
+
+
+
diff --git a/src/Ursa/Controls/NavMenu/NavMenuItem.cs b/src/Ursa/Controls/NavMenu/NavMenuItem.cs
index 6424278..da05dcd 100644
--- a/src/Ursa/Controls/NavMenu/NavMenuItem.cs
+++ b/src/Ursa/Controls/NavMenu/NavMenuItem.cs
@@ -11,6 +11,12 @@ using Avalonia.VisualTree;
namespace Ursa.Controls;
+///
+/// Navigation Menu Item
+/// Note:
+/// collapsed: Entire menu is collapsed, only first level icon is displayed. Submenus are in popup.
+/// closed: When menu is not in collapsed mode, represents whether submenu is hidden.
+///
[PseudoClasses(PC_Highlighted, PC_Collapsed, PC_Closed, PC_FirstLevel, PC_Selector)]
public class NavMenuItem: HeaderedSelectingItemsControl
{
@@ -145,7 +151,10 @@ public class NavMenuItem: HeaderedSelectingItemsControl
protected override void OnPointerPressed(PointerPressedEventArgs e)
{
base.OnPointerPressed(e);
- SelectItem(this);
+ if (this.ItemCount == 0)
+ {
+ SelectItem(this);
+ }
Command?.Execute(CommandParameter);
e.Handled = true;
}
@@ -165,6 +174,14 @@ public class NavMenuItem: HeaderedSelectingItemsControl
if (this.Parent is NavMenuItem menuItem)
{
menuItem.SelectItem(item);
+ var items = menuItem.LogicalChildren.OfType();
+ foreach (var child in items)
+ {
+ if (child != this)
+ {
+ child.ClearSelection();
+ }
+ }
}
else if (this.Parent is NavMenu menu)
{