Если выбор не важен, лучше использовать ItemsControl, завернутый в ScrollViewer. Эта комбинация является более легкой, чем Listbox (который на самом деле является производным от ItemsControl), и ее использование устранит необходимость использовать дешевый хак для переопределения поведения, которое уже отсутствует в ItemsControl.
В случаях, когда поведение выбора действительно важно, тогда это, очевидно, не будет работать. Однако, если вы хотите изменить цвет фона выбранного элемента таким образом, чтобы он не был виден пользователю, то это могло бы только ввести их в заблуждение. В тех случаях, когда вы намерены изменить какую-либо другую характеристику, чтобы указать, что элемент выбран, тогда некоторые другие ответы на этот вопрос могут все еще быть более актуальными.
Вот скелет того, как должна выглядеть разметка:
<ScrollViewer>
<ItemsControl>
<ItemsControl.ItemTemplate>
<DataTemplate>
...
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</ScrollViewer>