If you bind a ICommand
to your button, you can control the button Enabled property through the CanExecute method. If the method returns true the button turns enabled, otherwise turns disabled.
Prism offers out of the box the DelegateCommand
that turns easy the implementation of commands.