c# - 如何在展开菜单之前让 menuitem 的 Adornerlayer 不为空
问题描述
以下代码片段给了我 null 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:好的,似乎在菜单打开之前没有创建视觉树。我仍然不确定如何以编程方式触发可视化树的创建。
解决方案
在展开菜单之前,我没有找到返回非空装饰层的解决方案。
因此,当特定菜单项的可见性发生更改时,我引入了回调。
当菜单展开时,可见性发生了变化,我可以获得非空的 Adorner。
推荐阅读
- c - fork 线程安全吗?
- python - 在 jinja 的嵌套对象中选择定义的属性
- minecraft - 如何在 1.12.2 中 /fill with Armor Stand
- database - pg_cron 扩展连接失败
- node.js - 有没有一种有效的方法来获得成员 discord.js 的最稀有角色
- python - 如何解决 heroku flask 应用程序上的应用程序错误?
- visual-studio - 如何从 Visual Studio 将参数传递给 MSBuild?
- android - 适用于 Android 11 目标的离线提醒通知应用程序(Google Keep 之类)。应用关闭时如何接收通知?
- c# - 在asp.net中将大量数据从视图发送到控制器
- c# - Blazor 如何使用获取请求