2016-07-28 12 views
1

Intro Ich arbeite mit WPF mit MVVM-Light AnwendungWie Composite-Befehl in mvvm

Tor

Ich habe aufzurufen zwei Befehle von der gleichen Veranstaltung Ist das möglich verwenden MVVM mit .?

XAML aussehen wie dieses

<i:Interaction.Triggers> 
    <i:EventTrigger EventName="Loaded"> 
     <command:EventToCommand Command="{Binding Command1}" PassEventArgsToCommand="False" /> 
     <command:EventToCommand Command="{Binding Command2}" PassEventArgsToCommand="False" /> 
    </i:EventTrigger> 
</i:Interaction.Triggers> 

Problem

Wenn zwei Befehle Einhaken nur einer von ihnen aufgerufen wird, während das Ereignis ausgelöst wird.

Q1 Wie zwei Befehle in einem Ereignis aufgerufen werden?

Ich habe über Composite commands in PRISM gehört

Zum Beispiel die CompositeCommand Klasse in der Stock Trader Reference Implementierung verwendet wird (Börsenhändler RI), um den SubmitAllOrders Befehl durch die Schaltfläche Alle in der Submit vertreten zu implementieren Kauf-/Verkaufsansicht. Wenn der Benutzer auf die Schaltfläche Submit All klickt, wird jede durch die einzelnen Kauf-/Verkaufstransaktionen definierte SubmitCommand ausgeführt.

.
Q2 Gibt es in MVVM so etwas?

+1

Zu Frage 2: wahrscheinlich alles, was Sie tun können, ist separat und Composite passieren Array von Befehlen als Commandparameter, um es zu definieren. Und dann im RelayCommand erhalten Sie die Argumente und rufen Sie jeden der übergebenen Befehl separat auf. – VitaliyK

+0

Ja, das klingelt – Eldho

Antwort

0

Try 2 Ereignis-Triggern:

<i:Interaction.Triggers> 
    <i:EventTrigger EventName="Loaded"> 
     <command:EventToCommand Command="{Binding Command1}" PassEventArgsToCommand="False" /> 
    </i:EventTrigger> 
    <i:EventTrigger EventName="Loaded"> 
     <command:EventToCommand Command="{Binding Command2}" PassEventArgsToCommand="False" /> 
    </i:EventTrigger> 
</i:Interaction.Triggers>