Это должно быть сделано из ListBox, поскольку только он знает, какой элемент выбран в данный момент. Панель не хочет или не должна знать, выбрана она или нет.
Я бы порекомендовал реализовать это как прикрепленное поведение, чтобы вы могли повторно использовать эту функцию несколько раз.
Для этого:
- создать новый класс (возможно, с именем ListBoxSelector) с прикрепленным свойством MouseWheelChangesSelection (true / false).
- добавьте PropertyNotifyChangedEvent и при изменении свойства зарегистрируйте прослушиватель событий для событий PreviewMouseWheel / MouseWheel.
Вы можете изменить текущий выбранный элемент одним из следующих способов:
- увеличение выбранного индекса; или
- с использованием перемещения источника представления коллекции предыдущая / следующая