При нажатии кнопки она устанавливает значение e.Handled в значение true, что приводит к прекращению прохождения перенаправленного события.
Вы можете добавить обработчик для кнопки, который снова вызывает перенаправленное событие или находит визуального предка типа ListBoxItem и устанавливает для его свойства IsSelected значение true.
EDIT
Метод расширения, подобный этому:
public static DependencyObject FindVisualAncestor(this DependencyObject wpfObject, Predicate<DependencyObject> condition)
{
while (wpfObject != null)
{
if (condition(wpfObject))
{
return wpfObject;
}
wpfObject = VisualTreeHelper.GetParent(wpfObject);
}
return null;
}
Использование:
myButton.FindVisualAncestor((o) => o.GetType() == typeof(ListBoxItem))