У меня есть дата грид и в ресурсах к ней определено контекстное меню. Оно статичное, но мне нужно динамично добавлять sub MenuItem для одного из айтемов меню (там может быть и один, и два, и три пункта). Для этого я формирую HashSet, который биндится как ItemsSourse в "перент" MenuItem
<DataGrid.Resources>
<ContextMenu x:Key="actionsContextMenu">
<ContextMenu.Items>
<MenuItem Header="Cut" Click="Cut_Click"></MenuItem>
<MenuItem Header="Delete" Click="Delete_Click"></MenuItem>
<Separator/>
<MenuItem x:Name="promoteMenuItem" Header="Promote" Click="Promote_Click" ItemsSource="{Binding Path=PromoteStates}"/>
</ContextMenu.Items>
</ContextMenu>
</DataGrid.Resources>
Проблема заключается в том, что при клике на под айтем меню я не могу определить на какой из доступних пунктов было нажато.
Я пыталась делать несколько вариантов кастомизации типа MenuItem state = sender as MenuItem;
, но в большинстве случаев результат таков.
Может быть, что вариант биндинга не такой, но я пыталась биндить как хедер sub MenuItem, тогда отображется только сам обьєкт (HashSet), который биндится.
Вы подписались на событие клика по пункту promoteMenuItem
, а не по его дочернему подпункту, поэтому в sender
именно promoteMenuItem
(да, событие всплывает), настоящий источник события ищите в e.OriginalSource
:
MenuItem state = e.OriginalSource as MenuItem;
Другой вариант — подписаться именно на клик по дочернему элементу:
<MenuItem Header="Promote" ItemsSource="{Binding Path=PromoteStates}">
<MenuItem.ItemContainerStyle>
<Style TargetType="MenuItem">
<EventSetter Event="Click" Handler="MenuItem_Click"/>
</Style>
</MenuItem.ItemContainerStyle>
</MenuItem>
В этом случае, в sender
будет именно тот дочерний пункт, по которому был щелчок.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Мне нужно вывести категории и товары на одной странице, как здесь - http://bavariabavaria-rest
Стоит такая задачка на Joomla сделать так чтоб при отправке статьи или какой другой либо ссылке ведущей на нужный мне сайт в скайпе появлялась...