Взгляните на превосходный фонд Джоша Смита MVVM на Codeplex . В частности, взгляните на класс Messenger, упрощенный способ передачи сообщений между различными объектами ViewModel, которым не нужно знать друг друга.
Кроме того, я не верю, что существует жесткое правило «Нет кода в представлении», хотя лучше по возможности его избегать ... помните, что ваш XAML - это просто код .net, написанный на декларативный синтаксис; код-это просто C # или VB.net, чтобы дополнить это (если это абсолютно необходимо!)