MenuShowDelay - 也适用于键盘?
MenuShowDelay - also for keyboard?
我正在创建一个上下文,我正在尝试让项目的子菜单自动显示,就像您将鼠标悬停在上面时那样。
我是否缺少实现此目的的设置?
如果没有任何建议,请问如何让它工作?
谢谢。
编辑 - 嗯,也许我不清楚 - 目前鼠标悬停功能正常 - 当我将鼠标悬停在主上下文菜单的子菜单上时,它们会打开。当菜单项从键盘获得焦点时,我正在尝试实现类似的事情。
处理 GotKeyboardFocus
并将 IsSubmenuOpen
设置为 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);
}
}
我正在创建一个上下文,我正在尝试让项目的子菜单自动显示,就像您将鼠标悬停在上面时那样。
我是否缺少实现此目的的设置? 如果没有任何建议,请问如何让它工作?
谢谢。
编辑 - 嗯,也许我不清楚 - 目前鼠标悬停功能正常 - 当我将鼠标悬停在主上下文菜单的子菜单上时,它们会打开。当菜单项从键盘获得焦点时,我正在尝试实现类似的事情。
处理 GotKeyboardFocus
并将 IsSubmenuOpen
设置为 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);
}
}