Вы можете создать свойство в модели представления со следующей подписью:
public Func<string, string, bool> ReportMessage { get; set; }
Тогда при построении модели представления вы можете передать ей реализацию:
var OKCancelMessage = new Func<string, string, bool>((m, c) => MessageBox.Show(m, c) == MessageBoxResult.OK ? true : false);
new ViewModel()
{
ReportMessage = OKCancelMessage
}
Таким образом, ваш Модель представления не будет знать о реализации сообщения, и было достигнуто отделение представления от модели.
РЕДАКТИРОВАТЬ
Вызов функции прост:
if(ReportMessage("Do you really want to delete this record?", "Question"))
Delete(record);