¿Cómo puedo acceder a mi ViewModel desde el código detrás?

No entiendo cómo puedo crear un comando para crear un rectángulo seleccionable MVVM. Aquí está mi código:

<Rectangle x:Name="Color01" Fill="#FFF4F4F5" HorizontalAlignment="Left" Height="100" Margin="10,29,0,0" Stroke="Black" VerticalAlignment="Top" Width="100" MouseDown="Color_MouseDown" />
<Rectangle x:Name="Color02" Fill="#FFF4F4F5" HorizontalAlignment="Left" Height="100" Margin="115,29,0,0" Stroke="Black" VerticalAlignment="Top" Width="100"/>
<Rectangle x:Name="Color03" Fill="#FFF4F4F5" HorizontalAlignment="Left" Height="100" Margin="220,29,0,0" Stroke="Black" VerticalAlignment="Top" Width="100"/>
<Rectangle x:Name="Color04" Fill="#FFF4F4F5" HorizontalAlignment="Left" Height="100" Margin="325,29,0,0" Stroke="Black" VerticalAlignment="Top" Width="100"/>

En mi primer rectángulo puedes ver que creé un código detrás del evento. Primero, no sé cómo acceder a mi ViewModel desde el código que se encuentra detrás. Dos no es realmente MVVM.

public partial class MainWindow : Window
{
    /// <summary>
    /// Initializes a new instance of the MainWindow class.
    /// </summary>
    public MainWindow()
    {
        InitializeComponent();
        Closing += (s, e) => ViewModelLocator.Cleanup();
    }

    private void Color_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
    {
        // So what ???
    }
}

Solo necesito poder cambiar un valor booleano simple almacenado en una lista almacenada en mi modelo de vista cuando alguien hace clic en mi rectángulo. ¿Por qué es tan complicado hacerlo con MVVM?

Respuestas a la pregunta(3)

Su respuesta a la pregunta