2

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

4

2 回答 2

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();
}
于 2013-05-28T16:18:44.507 回答
0

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

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

于 2013-05-28T15:10:46.917 回答