Если вы ищете менее «хакерский» способ сделать это, вы можете просто обработать событие Loaded объекта ListBoxItem следующим образом.
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<EventSetter Event="Loaded" Handler="ListBoxItem_Loaded" />
</Style>
</ListBox.ItemContainerStyle>
Затем в обработчик событий добавьте ваши InputBindings, например, так.
Private Sub ListBoxItem_Loaded(ByVal sender As System.Object, ByVal e As RoutedEventArgs)
Dim item = DirectCast(sender, ListBoxItem)
item.InputBindings.Add(New KeyBinding(UserCommands.EditCommand, Key.Enter, ModifierKeys.None))
item.InputBindings.Add(New KeyBinding(UserCommands.DeleteCommand, Key.Delete, ModifierKeys.None))
item.InputBindings.Add(New MouseBinding(UserCommands.EditCommand, New MouseGesture(MouseAction.LeftDoubleClick)))
End Sub
Я знаю, что это не идеальное решение MVVM, но это лучший способ, который я обнаружил.