Feuern RelayCommand von CodeBehind an VM gebunden

8

Ich frage mich, ob ich einen RelayCommand auf meinem ViewModel so erstellen kann:

%Vor%

ctor:

%Vor%

Und aus dem Code hinter XAML, bekomme ich die ausgewählten Zeilen von einem DataGrid und lege sie in eine Liste.

%Vor%

In diesem Stadium möchte ich die Liste mit dem RelayCommand, das ich zuvor erstellt hatte, zurück zum ViewModel senden. Wäre es möglich, einen RelayCommand im Code zu erstellen und an den ViewModel-Befehl zu binden und ihn auszulösen?

Welche Alternative gibt es? Ich könnte natürlich die schwach referenzierte Messenger-Klasse in MVVM-Light verwenden, aber etwas, das ich nicht mag, ist, dass es es an alle Abonnenten dieses Anrufs sendet, und nicht nur das zugrunde liegende ViewModel (Es tötet Messenger, wenn Sie mehrere haben Instanzen derselben View innerhalb von TabControls)

Ich hoffe, dass jemand eine Idee hat, mich am Laufen zu halten, Danke vielmals, Kave

    
Houman 09.11.2010, 17:47
quelle

2 Antworten

14

Rufen Sie einfach die Methode Execute des Befehls auf, nachdem Sie das Ergebnis von CanExecute :

überprüft haben %Vor%     
Thomas Levesque 09.11.2010, 18:21
quelle
0

und wenn sich der DataContext eines ui-Elements manchmal von der Form als Ganzes unterscheidet, kann ich etwas wie folgt tun:

%Vor%

wo der DataContext des UserControls gefunden wird, auf dem das untergeordnete UserControl existiert, dann mach weiter und mach Spaß wie in den vorherigen Antworten angegeben. In diesem Fall muss ein Textfeld des untergeordneten Benutzersteuerelements bearbeitet werden, um dem übergeordneten Ansichtsmodell mitzuteilen, dass sich der Text geändert hat.

Beachten Sie, dass FindVisualParent von hier kommt & gt; & gt; & gt; https://stackoverflow.com/questions/636383/wpf-ways-to-find-controls

    
AllenM 01.08.2011 05:57
quelle