瀏覽代碼

submenu only on menuitems not seprators

Dan Walmsley 6 年之前
父節點
當前提交
8463fb0093
共有 2 個文件被更改,包括 34 次插入33 次删除
  1. 34 0
      src/Avalonia.Controls/NativeMenuItem.cs
  2. 0 33
      src/Avalonia.Controls/NativeMenuItemBase.cs

+ 34 - 0
src/Avalonia.Controls/NativeMenuItem.cs

@@ -11,6 +11,20 @@ namespace Avalonia.Controls
         private KeyGesture _gesture;
         private bool _enabled = true;
 
+        private NativeMenu _menu;
+
+        static NativeMenuItem()
+        {
+            MenuProperty.Changed.Subscribe(args =>
+            {
+                var item = (NativeMenuItem)args.Sender;
+                var value = (NativeMenu)args.NewValue;
+                if (value.Parent != null && value.Parent != item)
+                    throw new InvalidOperationException("NativeMenu already has a parent");
+                value.Parent = item;
+            });
+        }
+
 
         class CanExecuteChangedSubscriber : IWeakSubscriber<EventArgs>
         {
@@ -40,6 +54,26 @@ namespace Avalonia.Controls
             Header = header;
         }
 
+        public static readonly DirectProperty<NativeMenuItem, NativeMenu> MenuProperty =
+            AvaloniaProperty.RegisterDirect<NativeMenuItem, NativeMenu>(nameof(Menu), o => o._menu,
+                (o, v) =>
+                {
+                    if (v.Parent != null && v.Parent != o)
+                        throw new InvalidOperationException("NativeMenu already has a parent");
+                    o._menu = v;
+                });
+
+        public NativeMenu Menu
+        {
+            get => _menu;
+            set
+            {
+                if (value.Parent != null && value.Parent != this)
+                    throw new InvalidOperationException("NativeMenu already has a parent");
+                SetAndRaise(MenuProperty, ref _menu, value);
+            }
+        }
+
         public static readonly DirectProperty<NativeMenuItem, string> HeaderProperty =
             AvaloniaProperty.RegisterDirect<NativeMenuItem, string>(nameof(Header), o => o._header, (o, v) => o._header = v);
 

+ 0 - 33
src/Avalonia.Controls/NativeMenuItemBase.cs

@@ -4,46 +4,13 @@ namespace Avalonia.Controls
 {
     public class NativeMenuItemBase : AvaloniaObject
     {
-        private NativeMenu _menu;
         private NativeMenu _parent;
 
-        static NativeMenuItemBase()
-        {
-            MenuProperty.Changed.Subscribe(args =>
-            {
-                var item = (NativeMenuItem)args.Sender;
-                var value = (NativeMenu)args.NewValue;
-                if (value.Parent != null && value.Parent != item)
-                    throw new InvalidOperationException("NativeMenu already has a parent");
-                value.Parent = item;
-            });
-        }
-
         internal NativeMenuItemBase()
         {
 
         }
 
-        public static readonly DirectProperty<NativeMenuItem, NativeMenu> MenuProperty =
-            AvaloniaProperty.RegisterDirect<NativeMenuItem, NativeMenu>(nameof(Menu), o => o._menu,
-                (o, v) =>
-                {
-                    if (v.Parent != null && v.Parent != o)
-                        throw new InvalidOperationException("NativeMenu already has a parent");
-                    o._menu = v;
-                });
-
-        public NativeMenu Menu
-        {
-            get => _menu;
-            set
-            {
-                if (value.Parent != null && value.Parent != this)
-                    throw new InvalidOperationException("NativeMenu already has a parent");
-                SetAndRaise(MenuProperty, ref _menu, value);
-            }
-        }
-
         public static readonly DirectProperty<NativeMenuItem, NativeMenu> ParentProperty =
             AvaloniaProperty.RegisterDirect<NativeMenuItem, NativeMenu>("Parent", o => o.Parent, (o, v) => o.Parent = v);