我在使用Menu控件时发现它的SubmenuOpened(打开事件)发生的比较慢,鼠标移上去要等0.5秒左右才打开,具体看机器性能好像。
于是遍历Menu控件,给每个MenuItem添加事件,鼠标移入时立即设置MenuItem.IsSubmenuOpen = true;
这样实现了移入马上打开菜单,但是当鼠标从第三级菜单移动到第二级时,整个菜单都会被关闭。
比如我打开
1-1
1-1-1
1-1-2(鼠标停在这里)
1-2(鼠标从1-1-2移到这里时,整个菜单会关闭)
下面是代码,麻烦各位有闲帮忙看看,感激不尽。
View Code
public partial class TestWindow : Window
{
public TestWindow()
{
InitializeComponent();
eventInit(menu1.Items);
}
public void eventInit(ItemCollection items)
{
foreach (var item in items)
{
MenuItem menuItem = item as MenuItem;
//给每个菜单项添加鼠标事件,鼠标移入就打开菜单
menuItem.MouseEnter += (sendr, e) =>
{
menuItem.IsSubmenuOpen = true;//不加这句就不会有问题,但是不加就达不到要的效果
};
//有子项就递归
if (menuItem.HasItems)
{
eventInit(menuItem.Items);
}
}
}
}
View Code
1 回答
心有法竹
TA贡献1866条经验 获得超5个赞
MouseEventHandler mouseEventHandler = (sendr, e) =>
{
menuItem.IsSubmenuOpen = true;
};
menuItem.MouseEnter += mouseEventHandler;
menuItem.MouseLeave += mouseEventHandler;
- 1 回答
- 0 关注
- 732 浏览
添加回答
举报
0/150
提交
取消