Что вы можете сделать, чтобы обойти это:
Создайте свойство IsSelected для элементов, отображаемых в списке. Я предполагаю, что они также представлены моделью представления. Так что не должно быть драмы, чтобы добавить дополнительное свойство. Если они являются просто бизнес-объектами, рассмотрите возможность использования класса-обертки для безболезненной упаковки их в элементы модели представления (бесстыдный плагин - здесь - одна из таких систем. Я ежедневно использую ее для обертывания своих бизнес-объектов)
Используйте стиль контейнера элементов, чтобы связать свойство IsSelected элемента списка со свойством IsSelected отображаемых элементов, например
<ListBox.ItemContainerStyle>
<!-- This Style binds a ListBoxItem to a the ViewModelItem. -->
<Style
TargetType="{x:Type ListBoxItem}">
<Setter
Property="IsSelected"
Value="{Binding IsSelected, Mode=TwoWay}" />
</Style>
</ListBox.ItemContainerStyle>
(может понадобиться атрибут на основе стиля, не уверен)
Теперь каждый раз, когда выбирается элемент списка, ваша модель представления узнает об этом и может обновлять свою внутреннюю коллекцию по мере необходимости.