Usually, with commands I would bind a relaycommand or delegatecommand specific to each button rather than having some generic way to handle all buttons.
Where you want generic handling this is usually you want exactly the same process but with different parameters.
This is often more view orientated, in my experience.
A concrete example being a custom keyboard control I built.
This used one click handler for numerous buttons and the character to send was in the Tag of each button.
There are exceptions.
The very basic sample here passes a Type in via command parameter:
52485.wpf-tips-and-tricks-using-contentcontrol-instead-of-frame-and-page-for-navigation.aspx
For a mvvm friendly way to handle commands in a dialog I usually provide commands from a viewmodel to a control in the view that handles showing the dialog.
31416.wpf-mvvm-friendly-user-notification.aspx