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 を右クリックして、ListBoxItem がフォーカスを失うことなく MenuItem を強調表示できます。しかし、上向き矢印と下向き矢印を使用して ListBoxItems をナビゲートしようとすると、リストボックスにはまだキーボード フォーカスがあるため、リストボックス内の現在の項目が変更されます。

ユーザーがリストビューでコンテキストメニューをポップアップし、リストビューで選択された項目が強調表示されたまま、キーボードまたはマウスでメニュー項目を選択できる Windows 7 Explorer の動作をエミュレートしようとしています。

どんな助けでも大歓迎です。

よろしく、ジョエル・ゴードン。

4

0 に答える 0