2009-10-16 8 views
20

Mögliche Duplizieren:
Specify Command for MenuItem in a DataTemplateWPF ContextMenu mit ItemsSource - wie an Command in jedem Element zu binden?

Ich habe eine Sammlung von Objekten (Viewmodels), die Menüpunkte darstellen. Jeder von ihnen hat einen Befehl, den ich ausführen möchte, wenn auf ein MenuItem geklickt wird.

Wenn ich das Menü statisch tun wollte, ich mache es wie folgt aus:

<ContextMenu> 
    <MenuItem Header="{Binding Text1}" Command={Binding Command1}> 
    <MenuItem Header="{Binding Text2}" Command={Binding Command2}> 
</ContextMenu> 

aber wenn ich weiß, nicht die Einzelteile im Voraus (sie stammen aus einer Sammlung), ich brauche ContextMenu zuweisen .ItemsSource - und fügt einen Text in ein ItemTemplate ein.

<ContextMenu ItemsSource="{Binding MyMenuItems}"> 
    <ContextMenu.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding Text2}" /> <!-- But where to put Command binding? TextBlock.Command makes no sense, and we have no access to MenuItem! --> 
     </DataTemplate> 
    </ContextMenu.ItemTemplate> 
</ContextMenu> 

Auf diese Weise habe ich jedoch keinen Platz, einen Befehl zu binden - weil ich nicht die MenuItem für jede Reihe bekommen!

Irgendwelche Ratschläge, bitte? Danke Jungs!

+0

Ein Duplikat von [http://stackoverflow.com/questions/898852/specify-command-for-menuitem-in-a-datatemplate](http://stackoverflow.com/questions/898852/specify-command- for-menuitem-in-einem-Dataplate). –

Antwort

29

Dabei ist AssociatedCommand die Eigenschaft des viewmodel-Objekts, das den ICommand enthält.

+0

Danke, ich habe im verknüpften Thread bereits die gleiche Antwort gefunden ... –

+5

Wie teile ich die Befehle für die beiden Menüpunkte? – TrustyCoder

+0

Wie kann ich Befehle für mehrere Menüelemente trennen? Sagen wir "Hinzufügen" und "Entfernen". –