Как отключить анимации WPF ContextMenu?

Я пытаюсь выследить то, что укусило, я должен настроить, чтобы заставить ContextMenus в WPF прекращать анимировать, когда они кажутся/исчезают.

Из того, что я могу сказать, WPF создает Всплывающее окно для хостинга ContextMenu. Всплывающее окно смотрит на свое свойство PopupAnimation и решает, как анимировать. То, что я хочу сделать, всегда имеют тот набор ни к "Одному".

Я попытался установить глобальный стиль без имени с TargetType Всплывающего окна, которое устанавливает PopupAnimation ни на Один кроме этого, не работает. Если я прерываю Систему. Windows. Средства управления. Примитивы. Всплывающее окно. SetupAnimations I видит, что тип анимации все еще установлен Исчезнуть. Я предполагаю, что это не имело шанса применить стили все же..

Я попытался сцепить ContextMenuOpening, но нет никакого доступа к Всплывающему окну там, что я мог найти.

Что еще я мог попробовать?

Обратите внимание, что это - вид второй части другого вопроса, который я задал здесь. Совет там работал отлично для меню и всего остального, что мы имели, который анимировал, но одним исключением был ContextMenus. Они анимируют на основе свойств в коде, не шаблона. Я проверил это путем получения по запросу шаблона ContextMenu с помощью совета, данного здесь.

11
задан Community 23 May 2017 в 10:31
поделиться

1 ответ

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

0
ответ дан 3 December 2019 в 02:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: