Binding buttons functionality Discussion

Hey, I’m wondering about best practices for binding functionalities to buttons.
I currently have a panel that spawns panels that spawns rows and then I have the buttons, in the past, I’ve used a sequence of binding of events, but this gets trickier to debug and understand the whole hierarchy. From my research and studying Lyra, it seems that the best way is that either a) you’ll have the widget that has the button assigned to the click event and then do something (used on the main menu of Lyra) or b) the button knows what it should do and there’s no need of external binding (used a lot on settings).
The B option is great, but at Lyra’s settings is better because it receives the object that will act upon. But in cases, like we want to access the player or a subsystem, would that be a good way to design it?

Does anyone have some references, thoughts, or anything about this subject? Thank you.