public void BindAction(DefaultUIActionBinding binding, bool alwaysVisible) { if (binding.DefaultInterfaces.TryGet(out IContextMenuUIActionInterface _)) { DropDownItemsActionHandler.BindAction(new UIActionBinding(binding, perform => { try { if (perform) { Owner.HideMainMenu(); } // Try to find a UIActionHandler that is willing to validate/perform the given action. foreach (var actionHandler in UIActionUtilities.EnumerateUIActionHandlers(FocusHelper.GetFocusedControl())) { UIActionState currentActionState = actionHandler.TryPerformAction(binding.Action, perform); if (currentActionState.UIActionVisibility != UIActionVisibility.Parent) { return(currentActionState.UIActionVisibility == UIActionVisibility.Hidden && alwaysVisible ? UIActionVisibility.Disabled : currentActionState); } } } catch (Exception e) { MessageBox.Show(e.Message); } // No handler in the chain that processes the UIAction actively, so set to hidden/disabled. return(alwaysVisible ? UIActionVisibility.Disabled : UIActionVisibility.Hidden); })); } }
public void BindAction(DefaultUIActionBinding binding) => BindAction(binding, alwaysVisible: true);