Почему список WPF изменяет выбор при нажатии кнопки мыши, а не при нажатии кнопки?

Я никогда не замечал этого раньше, но WPF ListBox, кажется, меняет свой SelectedItem, когда Mouse не работает, но еще не выпущен. В качестве быстрого примера просто создайте простой ListBox с несколькими ListBoxItems, например:

<ListBox>
  <ListBoxItem>Hello</ListBoxItem>
  <ListBoxItem>World</ListBoxItem>
  <ListBoxItem>ListBox</ListBoxItem>
  <ListBoxItem>Test</ListBoxItem>
</ListBox>

запустите приложение, нажмите кнопку мыши (не отпускайте ее!) И перемещайте мышь. SelectedItem будет меняться по мере движения мыши. Это иллюстрирует более серьезную проблему (по крайней мере для меня), что элемент ListBox SelectedItem будет установлен , как только , когда вы опускаете мышь, а не когда она поднимается. Обычно это не проблема, но в моем случае я хотел бы включить перетаскивание элементов в моем ListBox, чтобы элементы не выделялись явным образом.

Я полагаю, что у меня есть единственный выход - создать собственный ItemsControl или Selector с семантикой стиля выбора, подобной ListBox, так что на самом деле мой вопрос больше, почему ListBox работает таким образом? Кто-нибудь знает об этом?

11
задан Nik 28 November 2017 в 22:17
поделиться