Клик на SubMenuItem в контекстном меню

154
19 декабря 2018, 17:10

У меня есть дата грид и в ресурсах к ней определено контекстное меню. Оно статичное, но мне нужно динамично добавлять 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), который биндится.

Answer 1

Вы подписались на событие клика по пункту 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 будет именно тот дочерний пункт, по которому был щелчок.

READ ALSO
Библиотека для чтения shapefile shp shx. C#

Библиотека для чтения shapefile shp shx. C#

Всем доброго времени суток!

145
Вывести категории и товары на одной странице

Вывести категории и товары на одной странице

Мне нужно вывести категории и товары на одной странице, как здесь - http://bavariabavaria-rest

201
Картинка в ссылке

Картинка в ссылке

Стоит такая задачка на Joomla сделать так чтоб при отправке статьи или какой другой либо ссылке ведущей на нужный мне сайт в скайпе появлялась...

140