Возможный дубликат:
Задайте команду для MenuItem в DataTemplate
У меня есть набор объектов (viewmodels), которые представляют элементы меню. У каждой из них есть команда, которую я хотел бы выполнить, когда щелкнут MenuItem.
Если бы я хотел сделать меню статически, я делаю это вот так:
<ContextMenu>
<MenuItem Header="{Binding Text1}" Command={Binding Command1}>
<MenuItem Header="{Binding Text2}" Command={Binding Command2}>
</ContextMenu>
но когда я не знаю элементы заранее (они взяты из коллекции), мне нужно назначить ContextMenu.ItemsSource - и поместить текст в ItemTemplate.
<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>
Таким образом, мне некуда привязывать команду - потому что я не могу получить MenuItem для каждой строки!
Любые советы, пожалуйста? Спасибо, ребята!