フォーカスに関して、コンテキスト メニューをメイン メニューと同じように動作させたいと考えています。
たとえば、キーボード フォーカスがリスト ボックスにあり、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 の動作をエミュレートしようとしています。
どんな助けでも大歓迎です。
よろしく、ジョエル・ゴードン。