Я никогда не замечал этого раньше, но WPF ListBox, кажется, меняет свой SelectedItem, когда мышь не работает, но еще не выпущена. В качестве быстрого примера просто создайте простой ListBox с несколькими ListBoxItems, например:
<ListBox>
<ListBoxItem>Hello</ListBoxItem>
<ListBoxItem>World</ListBoxItem>
<ListBoxItem>ListBox</ListBoxItem>
<ListBoxItem>Test</ListBoxItem>
</ListBox>
запустите приложение, нажмите кнопку мыши (не отпустите его!) и передвиньте мышь. При перемещении мыши элемент SelectedItem изменится. Это иллюстрирует большую проблему (по крайней мере, для меня), что ListBox SelectedItem будет установлен сразу же, как вы нажимаете мыши, а не при наведении мыши. Обычно это не проблема, но в моем случае я бы хотел включить перетаскивание элементов в моем ListBox без явного выбора элементов.
Я предполагаю, что мой единственный ресурс - создать пользовательский элемент ItemsControl или Selector с семантикой стиля выбора, подобной ListBox, так что действительно мой вопрос - это больше, почему ListBox работает таким образом? Кто-нибудь знает это?