Я никогда не замечал этого раньше, но 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 работает таким образом? Кто-нибудь знает об этом?