WPF contextmenu и ListView

Хорошо, надо надеяться, это просто, но по некоторым причинам я не могу найти прямой ответ, и я не достаточно знаком с WPF все же, чтобы знать, как сделать это.

У меня есть listview, он связывается с заметным набором объектов отобразиться. Я хочу иметь контекстное меню с набором опций. Опции в контекстном меню относительно конкретного объекта в списке, на который нажали (вещам нравится, удаляют, экспортируют, и т.д.).

Таким образом, мне нужен объект, по которому пользователь щелкнул правой кнопкой в моем listview, который будет передан в качестве параметра команде, которую выполняет контекстное меню.

Как я делаю это?

Править: Я должен упомянуть, что предпочел бы решение, которое является главным образом (если не полностью) xaml - я стараюсь не иметь значительный код в коде - позади. Если это - единственный способ сделать это хотя...

Дальнейшее Редактирование: Больше деталей, что я забыл упоминать, что важны. Команда, которую я хочу выполняемый, находится на объекте, связанном с контекстом данных моего пользовательского элемента управления, это не находится на объектах в представлении списка. Таким образом, мне нужно контекстное меню на объектах представления списка, которые будут связаны с командой, которая находится на контексте данных пользовательского элемента управления, и listview объект передал в качестве параметра в ту команду.

5
задан Joe 12 February 2010 в 23:08
поделиться

1 ответ

Это зависит от того, является ли ваше ContextMenu частью шаблона для отдельных элементов или присоединено к ListBox в целом.

Если вы прикрепляете свое ContextMenu к элементам в списке с помощью DataTemplate (обычно это лучший способ сделать это), то DataContext в MenuItem уже настроен, поэтому все, что вам нужно сделать, это:

<MenuItem ... CommandParameter="{Binding}" />

С другой стороны, если ваше ContextMenu прикреплено к ListBox в целом, вам понадобится для доступа к свойству SelectedItem ListBox :

<MenuItem ... CommandParameter="{Binding SelectedItem, RelativeSource={RelativeSource FindAncestor,ListBox,1}} />
4
ответ дан 15 December 2019 в 01:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: