Я пытаюсь выследить то, что укусило, я должен настроить, чтобы заставить ContextMenus в WPF прекращать анимировать, когда они кажутся/исчезают.
Из того, что я могу сказать, WPF создает Всплывающее окно для хостинга ContextMenu. Всплывающее окно смотрит на свое свойство PopupAnimation и решает, как анимировать. То, что я хочу сделать, всегда имеют тот набор ни к "Одному".
Я попытался установить глобальный стиль без имени с TargetType Всплывающего окна, которое устанавливает PopupAnimation ни на Один кроме этого, не работает. Если я прерываю Систему. Windows. Средства управления. Примитивы. Всплывающее окно. SetupAnimations I видит, что тип анимации все еще установлен Исчезнуть. Я предполагаю, что это не имело шанса применить стили все же..
Я попытался сцепить ContextMenuOpening, но нет никакого доступа к Всплывающему окну там, что я мог найти.
Что еще я мог попробовать?
Обратите внимание, что это - вид второй части другого вопроса, который я задал здесь. Совет там работал отлично для меню и всего остального, что мы имели, который анимировал, но одним исключением был ContextMenus. Они анимируют на основе свойств в коде, не шаблона. Я проверил это путем получения по запросу шаблона ContextMenu с помощью совета, данного здесь.
В вашем предыдущем вопросе Роб показал вам причину, по которой он действует таким образом. Вы не можете создать новый ControlTemplate
для своего ContextMenu
и установить для свойства PopupAnimation
значение None
, как показано ниже:
<Popup x:Name="PART_Popup"
AllowsTransparency="true"
Focusable="false"
HorizontalOffset="-2"
IsOpen="{Binding IsSubmenuOpen,
RelativeSource={RelativeSource TemplatedParent}}"
PopupAnimation="None"
Placement="Right"
VerticalOffset="-3">
Вы можете создать свое собственное ContextMenu
или примените ControlTemplate
, используя показанный код, к конкретным экземплярам.