2

我希望上下文菜单在焦点方面与主菜单的行为方式相同。

例如,如果键盘焦点在列表框中,并且我按 F10 将我带到主菜单并使用箭头键在菜单中导航,则列表框中的当前项目保持突出显示。但是,如果我右键单击弹出上下文菜单的列表框中的项目,则列表框项目失去焦点并且不再突出显示。

以下是一些演示该行为的示例 XAML。

    <Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Grid.Resources>
            <ContextMenu x:Key="ContextMenu" >
                <MenuItem Header="Item 1" />
                <MenuItem Header="Item 2" />
            </ContextMenu>
        </Grid.Resources>

        <Grid.RowDefinitions>
            <RowDefinition Height="20" />
            <RowDefinition Height="100" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>

        <Menu Grid.Row="0">
            <MenuItem Header="_File">
                <MenuItem Header="Item 1" />
                <MenuItem Header="Item 2" />
            </MenuItem>
        </Menu>

        <ListBox Grid.Row="2" ContextMenu="{StaticResource ResourceKey=ContextMenu}">
            <ListBoxItem Content="List Item 1"/>
            <ListBoxItem Content="List Item 2"/>
            <ListBoxItem Content="List Item 3"/>
            <ListBoxItem Content="List Item 4"/>
        </ListBox>
    </Grid>
</Window>

我尝试在 ContextMenu 中的 ContextMenu 和 MenuItem 上设置 Focusable="False",然后我可以右键单击 ListBoxItem 并突出显示 MenuItem,而 ListBoxItem 不会失去焦点。但是,如果我尝试使用向上和向下箭头导航 ListBoxItems,则列表框中的当前项目会更改,因为列表框仍然具有键盘焦点。

我试图模拟 Windows 7 Explorer 的行为,用户可以在列表视图中弹出上下文菜单并使用键盘或鼠标选择菜单项,同时在列表视图中选择的任何项目保持突出显示。

非常感谢任何帮助。

问候,乔尔·戈登。

4

0 回答 0