如何在扩展菜单之前为菜单项获取非空的 Adornerlayer

How to get not null Adornerlayer for menuitem before expanding the menu

以下代码片段为我提供了空的 adornerLayer

  Menu menu = (Menu)this.FindName("Menu");
  MenuItem menuItem = (MenuItem) menu.Items.GetItemAt(0);

  MenuItem subMenuItem = (MenuItem) menuItem.Items.GetItemAt(1);

  var layer = AdornerLayer.GetAdornerLayer(subMenuItem);
  layer.Add(new SimpleCircleAdorner(subMenuItem));

万一我会添加行:

menuItem.IsSubmenuOpen = true

菜单以编程方式展开,装饰层不为空。

是否有可能为未展开的菜单获取非空装饰器? (第一次)

Edit1: 好吧,好像在菜单打开之前没有创建可视化树。我仍然不确定如何以编程方式触发视觉树的创建。

我没有找到 returns 在展开菜单之前装饰层不是空的解决方案。

因此,当特定菜单项的可见性发生变化时,我引入了回调。

展开菜单时,可见性发生变化,我可以获得非空装饰器。