Согласно документации MSDN ...
ContextMenu само по себе является
FrameworkElement производный класс, но
событие ContextMenuClosing не будет
быть поднятым контекстным меню напрямую.
Вместо этого событие поднимается из
элемент, который "владеет" контекстным меню
как собственность и поднимается только тогда, когда
пользователь пытается закрыть контекст
меню в интерфейсе пользователя.
Вам нужно будет настроить свой код так, чтобы обработчик определялся исключительно на DropDownButton
, как вы это сделали. Если есть вложенный ContextMenu
, то вложенный ContextMenu
явно вызовет событие.
<local:DropDownButton ContextMenuClosing="colorPallete_ContextMenuClosing">
...
</local:DropDownButton>
При использовании Button
это будет выглядеть так ...
<Button ContextMenuClosing="ContextMenu_ContextMenuClosing">
<Button.ContextMenu>
<ContextMenu>
<MenuItem Header="Go"/>
</ContextMenu>
</Button.ContextMenu>
</Button>
.. где, когда ContextMenu
, содержащий MenuItem
, закрывается; событие будет вызвано, и будет вызван обработчик.
Не уверен, какой DropDownButton
элемент управления вы используете, поэтому я не могу комментировать, что такое свойство DropDown
и как вы вкладываете свой ContextMenu
.