Короче говоря, дециклон прав; это исходит от ОС, но вот почему:
Шаблон по умолчанию для MenuItem содержит разметку и логику для отображения подменю. Посмотри туда.
Когда я открыл копию шаблона MenuItem, я нашел не менее четырех ControlTemplate
с, трех Style
с, двух Brush
с, список продолжался. Используйте Blend для «Редактирования копии» любого MenuItem.
Внутри ControlTemplate
, относящейся к подменю MenuItem
, находится управляющий примитив, называемый Popup
, объявленный так:
<Popup x:Name="PART_Popup"
AllowsTransparency="true"
Focusable="false"
HorizontalOffset="-2"
IsOpen="{Binding IsSubmenuOpen,
RelativeSource={RelativeSource TemplatedParent}}"
PopupAnimation="{DynamicResource
{x:Static SystemParameters.MenuPopupAnimationKey}}"
Placement="Right"
VerticalOffset="-3">
Обратите внимание на свойство PopupAnimation
; это указывает на SystemParameters.MenuPopupAnimationKey
. Это то, что оживляет ваше меню.
Это дает вам два варианта, которые мне придутся, оба из которых потребуют, чтобы вы определили собственный шаблон для MenuItem
s в вашем приложении:
- Переконфигурировать PART_Popup, чтобы
AllowsTranparency="False"
; или
- Повторный шаблон
MenuItem
для вашего приложения, удаляющий ссылку PopupAnimation
на анимацию ОС.
Затем вы можете создать свои собственные триггеры для анимации появления этого всплывающего окна.