Возможно, вы захотите попробовать Catel . Он позволяет определить класс DataWindow (вместо Window), и этот класс автоматически создает для вас модель представления. Таким образом, вы можете использовать объявление ViewModel так же, как и в своем исходном сообщении, и модель представления все равно будет создана и установлена как DataContext.
См. в этой статье для пример.