|
|
|
@ -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>
|
|
|
|
|