Хорошо, надо надеяться, это просто, но по некоторым причинам я не могу найти прямой ответ, и я не достаточно знаком с WPF все же, чтобы знать, как сделать это.
У меня есть listview, он связывается с заметным набором объектов отобразиться. Я хочу иметь контекстное меню с набором опций. Опции в контекстном меню относительно конкретного объекта в списке, на который нажали (вещам нравится, удаляют, экспортируют, и т.д.).
Таким образом, мне нужен объект, по которому пользователь щелкнул правой кнопкой в моем listview, который будет передан в качестве параметра команде, которую выполняет контекстное меню.
Как я делаю это?
Править: Я должен упомянуть, что предпочел бы решение, которое является главным образом (если не полностью) xaml - я стараюсь не иметь значительный код в коде - позади. Если это - единственный способ сделать это хотя...
Дальнейшее Редактирование: Больше деталей, что я забыл упоминать, что важны. Команда, которую я хочу выполняемый, находится на объекте, связанном с контекстом данных моего пользовательского элемента управления, это не находится на объектах в представлении списка. Таким образом, мне нужно контекстное меню на объектах представления списка, которые будут связаны с командой, которая находится на контексте данных пользовательского элемента управления, и listview объект передал в качестве параметра в ту команду.
Это зависит от того, является ли ваше ContextMenu
частью шаблона для отдельных элементов или присоединено к ListBox в целом.
Если вы прикрепляете свое ContextMenu
к элементам в списке с помощью DataTemplate (обычно это лучший способ сделать это), то DataContext
в MenuItem
уже настроен, поэтому все, что вам нужно сделать, это:
<MenuItem ... CommandParameter="{Binding}" />
С другой стороны, если ваше ContextMenu
прикреплено к ListBox
в целом, вам понадобится для доступа к свойству SelectedItem
ListBox
:
<MenuItem ... CommandParameter="{Binding SelectedItem, RelativeSource={RelativeSource FindAncestor,ListBox,1}} />