¿Por qué evitar el código subyacente en el patrón WPF MVVM?

En el artículo,WPF Aplicaciones con el patrón de diseño Modelo-Vista-VistaModelo, el autor que es Josh Smith dijo:

(1) En una arquitectura MVVM bien diseñada, el código subyacente para la mayoría de las Vistas debe estar vacío o, como máximo, solo debe contener código que manipule los controles y recursos contenidos dentro de esa vista. (2) A veces también es necesario escribir código en el código de una Vista detrás que interactúa con un objeto ViewModel, como enganchar un evento o llamar a un método que de otro modo sería muy difícil invocar desde el propio ViewModel.

Mi pregunta es, en el (1), por qué el código vacío detrás se considera un MVVM bien diseñado. (Parece que el código vacío detrás siempre es bueno)

EDIT: Mi pregunta es, como la siguiente, por qué el enfoque como elAttachedCommandBehavior o elInvokeCommandAction se intenta evitar el código detrás de la codificación.

Déjame explicarte más detalles.

n lo que respecta al (1), creo que me gustaría la siguiente situación a partir del AttachedCommandBehavior. Como Border no implementa laICommandSource Para elMouseRightButtonDown, normalmente no se puede vincular el evento y laICommand, pero puede hacer con la AttachedCommandBehavior.

<!-- I modified some code from the AttachedCommandBehavior to show more simply -->
<Border>
    <local:CommandBehaviorCollection.Behaviors>
           <local:BehaviorBinding Event="MouseRightButtonDown" 
                  Command="{Binding SomeCommand}" 
                  CommandParameter="A Command on MouseRightButtonDown"/>
    </local:CommandBehaviorCollection.Behaviors>
</Border>

Podemos hacer esto con elSystem.Windows.Interactivity.InvokeCommandAction.

<Border xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity" >
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="MouseRightButtonDown">
            <i:InvokeCommandAction Command="{Binding SomeCommand}" 
               CommandParameter="A Command on MouseRightButtonDown"/>
        </i:EventTrigger>
    </i:Interaction.Triggers>
</Border>

PERO

Usamos el siguiente XAML y su código detrás de tener elBorder_MouseRightButtonDown método, que está vinculado al (2) Josh Simth dicho anteriormente.

<Border MouseRightButtonDown ="Border_MouseRightButtonDown"/>

Creo que usar el código subyacente anterior no es malo solo porque la diferencia entre estos es solo cuando se vincula un comando o se agrega un controlador de eventos.

¿Qué piensas sobre esto

Respuestas a la pregunta(4)

Su respuesta a la pregunta