我在使用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 關注
- 760 瀏覽
添加回答
舉報
0/150
提交
取消