Ich verstehe nicht, wie ich einen Befehl zum Erstellen eines anklickbaren MVVM-Rechtecks erstellen kann. Hier ist mein Code:
%Vor%Auf meinem ersten Rechteck können Sie sehen, dass ich einen Code hinter dem Ereignis erstellt habe. Zuerst weiß ich nicht, wie ich von dem Code dahinter auf mein ViewModel zugreifen kann. Zwei, es ist nicht wirklich MVVM.
%Vor%Ich muss nur einen einfachen booleschen Wert ändern können, der in einer Liste gespeichert ist, die in meinem viewModel gespeichert ist, wenn jemand auf mein Rechteck klickt. Warum ist es so kompliziert mit MVVM zu tun?
Das ist nicht zu schwierig. Erstellen Sie zunächst eine Instanz Ihres ViewModel in Ihrem Window XAML:
XAML anzeigen:
%Vor% Danach können Sie System.Windows.Interactivity.InvokeCommandAction
um Ihr Event in einen Befehl zu übersetzen:
XAML anzeigen:
%Vor% Richten Sie nun in Ihrem ViewModel ein ICommand
und die DelegateCommand
Implementierung, um an dieses Ereignis zu binden:
ViewModel:
%Vor%In MVVM sollten Sie nicht von hinten auf Ihr Ansichtsmodell zugreifen, das Ansichtsmodell und die Ansicht sind einander nicht bekannt, und hier endet die Vorlesung:)
Stattdessen können Sie das EventToCommand-Verhalten an Ihr Steuerelement anhängen. Dadurch können Sie ein Ereignis im Steuerelement an einen Befehl im Datenkontext binden. Siehe msdn commands tutorial hier.
Wenn Sie es unbedingt tun möchten, können Sie auf die Steuerdatenkontexteigenschaft zugreifen und sie in Ihren Ansichtmodelltyp umwandeln, um Zugriff auf die Interna zu erhalten.
%Vor%