Wie kann ich von hinten auf mein ViewModel zugreifen?

7

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?

    
Bastien Vandamme 20.07.2014, 03:30
quelle

2 Antworten

7

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%     
Yuval Itzchakov 20.07.2014, 03:52
quelle
18

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%     
kidshaw 20.07.2014 09:24
quelle

Tags und Links