I'm writing a menubar app with pure C# and Xamarin.Mac (no Xcode, so no storyboard), and I find it annoying that when I want to listen for events on an object.
I'm aware I can write something like
public class MenuDelegate : NSMenuDelegate {
public class HighlightChangedEventArgs : EventArgs {
public NSMenuItem? Item { get; set; }
}
public event EventHandler<HighlightChangedEventArgs?>? HighlightChanged;
public override void MenuWillHighlightItem(NSMenu menu, NSMenuItem item) { Opened.Invoke(menu, new HighlightChangedEventArgs() { Item = item }); }
public event EventHandler? Opened;
public override void MenuWillOpen(NSMenu menu) { Opened.Invoke(menu, null); }
public event EventHandler? Closed;
public override void MenuDidClose(NSMenu menu) { Closed.Invoke(menu,null); }
}
var menuDelagate = new MenuDelegate();
sbIcon.Menu.Delegate = menuDelegate;
menuDelegate.HighlightChanged += (object sender, MenuDelegate.HighlightChangedEventArgs args) => {
/// stuff
};
however this is quite annoying to do, so I was wondering if there was an easier way.