|
|
@@ -99,13 +99,13 @@ namespace Avalonia.Controls
|
|
|
SelectableMixin.Attach<MenuItem>(IsSelectedProperty);
|
|
|
CommandProperty.Changed.Subscribe(CommandChanged);
|
|
|
FocusableProperty.OverrideDefaultValue<MenuItem>(true);
|
|
|
+ HeaderProperty.Changed.AddClassHandler<MenuItem>(x => x.HeaderChanged);
|
|
|
IconProperty.Changed.AddClassHandler<MenuItem>(x => x.IconChanged);
|
|
|
IsSelectedProperty.Changed.AddClassHandler<MenuItem>(x => x.IsSelectedChanged);
|
|
|
ItemsPanelProperty.OverrideDefaultValue<MenuItem>(DefaultPanel);
|
|
|
ClickEvent.AddClassHandler<MenuItem>(x => x.OnClick);
|
|
|
SubmenuOpenedEvent.AddClassHandler<MenuItem>(x => x.OnSubmenuOpened);
|
|
|
IsSubMenuOpenProperty.Changed.AddClassHandler<MenuItem>(x => x.SubMenuOpenChanged);
|
|
|
- PseudoClass<MenuItem, object>(HeaderProperty, x => x as string == "-", ":separator");
|
|
|
}
|
|
|
|
|
|
public MenuItem()
|
|
|
@@ -420,6 +420,24 @@ namespace Avalonia.Controls
|
|
|
IsEnabled = Command == null || Command.CanExecute(CommandParameter);
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// Called when the <see cref="Header"/> property changes.
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="e">The property change event.</param>
|
|
|
+ private void HeaderChanged(AvaloniaPropertyChangedEventArgs e)
|
|
|
+ {
|
|
|
+ if (e.NewValue is string newValue && newValue == "-")
|
|
|
+ {
|
|
|
+ PseudoClasses.Add(":separator");
|
|
|
+ Focusable = false;
|
|
|
+ }
|
|
|
+ else if (e.OldValue is string oldValue && oldValue == "-")
|
|
|
+ {
|
|
|
+ PseudoClasses.Remove(":separator");
|
|
|
+ Focusable = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// Called when the <see cref="Icon"/> property changes.
|
|
|
/// </summary>
|