Given that you have a collection of items controlling the command, I would recommend using something similar to the second Will sentence as follows:
<MenuItem
Command="{Binding MenuCommand}"
CommandParameter="{Binding}"
Header="{Binding DisplayText}" />
On the ViewModel side, you can use DelegateCommand or RelayCommand to connect the handler method. This allows you to check the data of a menu item and do everything you need based on what is in it.
public DelegateCommand<MyMenuObject> MenuCommand { get; private set; }
public ViewModel()
{
MenuCommand = new DelegateCommand<MyMenuObject>(MenuCommandExecuted);
}
public void MenuCommandExecuted(MyMenuObject parameter)
{
}
MenuCommand ICommand , , , - RelativeSource FindAncestor DataContext (ViewModel) MenuCommand. - .
Prism DelegateCommand
RelayCommand