Comment puis-je accéder à mon ViewModel de code derrière

Je ne comprends pas comment je peux créer une commande pour créer une MVVM cliquable rectangle. Voici mon code:

<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"/>

Sur mon premier rectangle, vous pouvez le voir j'ai créé un code derrière événement. D'abord je ne sais pas comment accéder à mon ViewModel du code derrière. Deux c'est pas vraiment 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 ???
    }
}

J'ai juste besoin d'être en mesure de changer une valeur booléenne simple stockées dans une liste stockée dans mon viewModel quand quelqu'un clique sur mon rectangle. Pourquoi c'est si compliquer à faire avec MVVM?

var rect = sender as Rectangle et puis faire ce que vous voulez, même si c'est très mauvais de conception et de vous doit par tous les moyens d'utiliser la liaison de données et de lier la couleur d'un champ, plutôt que de faire cela. Apprendre et utiliser les abstractions vous sont donnés plutôt que de les combattre.
Et j'ai le rectangle... alors que faire? L'obtention de l'expéditeur n'est pas le problème. Après cela, j'ai besoin de mettre à jour mon boolean valeur stockée dans une liste stockée dans mon viewModel.

OriginalL'auteur Bastien Vandamme | 2014-07-20