У меня тоже была эта проблема. Чтение блога Bea Stollnitz дало мне идею.
Я начал с шаблона данных, подобного этому, в моих ресурсах:
<ContextMenu x:Key="MyMenu">
<MenuItem Header="A" />
<MenuItem Header="B" />
<MenuItem Header="C" />
</ContextMenu>
<DataTemplate x:Key="MyTemplateKey" DataType="{x:Type local:myType}">
<TextBlock ContextMenu="{StaticResource MyMenu}" >
<Run Text="{Binding Path=MyBindingPath}" FontSize="20" FontWeight="Bold" />
</TextBlock>
</DataTemplate>
Как описано выше, это заставляет клавишу меню клавиатуры не вызывать контекстное меню, хотя щелчок правой кнопкой мыши работает. Проблема в том, что контекстное меню должно быть в ListBoxItem, а не в шаблоне внутри.
Привет престо!
<Style x:Key="ContextLBI" TargetType="{x:Type ListBoxItem}">
<Setter Property="ContextMenu" Value="{StaticResource MyMenu}">
</Setter>
</Style>
Теперь просто удалите ContextMenu из шаблона данных и установите свой стиль в поле списка следующим образом:
<ListBox ItemTemplate="{StaticResource MyTemplateKey}"
ItemContainerStyle="{StaticResource ContextLBI}"
... >
</ListBox>