C# MenuShowDelay-也适用于键盘?
我正在创建一个上下文,我正在尝试让项目的子菜单自动显示,就像你用鼠标悬停在上面时一样 我是否错过了实现这一点的环境? 如果没有任何建议如何使其工作,请 谢谢C# MenuShowDelay-也适用于键盘?,c#,.net,wpf,contextmenu,C#,.net,Wpf,Contextmenu,我正在创建一个上下文,我正在尝试让项目的子菜单自动显示,就像你用鼠标悬停在上面时一样 我是否错过了实现这一点的环境? 如果没有任何建议如何使其工作,请 谢谢 编辑-嗯,可能我不清楚-当前鼠标悬停功能正常-当我用鼠标悬停在主关联菜单上时,主关联菜单的子菜单打开。当菜单项从键盘获得焦点时,我试图实现类似的效果。处理GotKeyboardFocus并将IsubMenuOpen设置为true。下面是一个示例,您可以基于它进行行为 <TextBox Text="test"> <T
编辑-嗯,可能我不清楚-当前鼠标悬停功能正常-当我用鼠标悬停在主关联菜单上时,主关联菜单的子菜单打开。当菜单项从键盘获得焦点时,我试图实现类似的效果。处理
GotKeyboardFocus
并将IsubMenuOpen
设置为true
。下面是一个示例,您可以基于它进行行为
<TextBox Text="test">
<TextBox.ContextMenu>
<ContextMenu>
<MenuItem Header="111"></MenuItem>
<MenuItem Header="222"></MenuItem>
<MenuItem Header="333" GotKeyboardFocus="MenuItem_GotKeyboardFocus">
<MenuItem Header="fff" />
<MenuItem Header="ggg" />
</MenuItem>
<MenuItem Header="444"></MenuItem>
</ContextMenu>
</TextBox.ContextMenu>
</TextBox>
private void MenuItem_GotKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
{
if ((sender as MenuItem) != null)
{
Dispatcher.BeginInvoke((Action)(() => { (sender as MenuItem).IsSubmenuOpen = true; }), null);
}
}
private void MenuItem_GotKeyboardFocus(对象发送器,KeyboardFocusChangedEventArgs e)
{
if((发送方作为MenuItem)!=null)
{
Dispatcher.BeginInvoke((操作)(()=>{(发送方作为MenuItem.IsSubmenuOpen=true;}),null);
}
}
为什么需要使用BeginInvoke?如果没有,我会遇到左箭头和子菜单中的escape的问题。