You should create following services
IMessageBoxService \\ Exposes Show(string Title, String Caption)
IDispatcherService \\ Exposes Dispatch(Action action), Register(Dispatcher)
Then Create WPF specific implementation as
MessageBoxService (or WPFMessageBoxService if you wish)
DispatcherService
Register these to the DI/IoC container used in the application (such as Unity/MEF/Windsor)
For the dependent View Model, Pass the service through constructor like
public MainViewModel(IMessageBoxService messageBoxService, IDispatcherService dispatcherService)
Now you can use messageBoxService/dispatcherService to invoke message box through ViewModel on Dispatcher.