如何让WPF ContextMenu在打开时自动选择第一个项目?

时间:2013-05-28 14:56:54

标签: c# wpf contextmenu

当用户点击快捷键时(通过将其IsOpen属性更改为true),我将打开ContextMenu。但是当它打开时,没有选择任何项目。如何选择第一个项目,以便用户不必按向下箭头即可到达?

2 个答案:

答案 0 :(得分:1)

试试这个:

<ListBox>
    <ListBoxItem Content="Item">
        <ListBoxItem.ContextMenu>
            <ContextMenu Opened="ContextMenu_Opened">
                <MenuItem Click="some_event" Header="Qwerty"/>
            </ContextMenu>
        </ListBoxItem.ContextMenu>
    </ListBoxItem>
</ListBox>

在代码隐藏中:

private void ContextMenu_Opened(object sender, RoutedEventArgs e)
{
    var contextMenu = sender as ContextMenu;
    (contextMenu.Items[0] as MenuItem).Focus();
}

答案 1 :(得分:0)

我不确定您打算选择哪个控件(Datagrid,ListView或其他)。但是,您需要检查的第一件事是您的控件是否支持KeyPress事件。如果它支持,则尝试为KeyPress附加处理程序并编写逻辑以检查所需的键并相应地选择项目。

您可以检查一个示例here,该示例具有如何根据Enter键选择数据网格单元格/行的实现。