Поздний ответ, но есть гораздо лучшее и более простое решение:
<ListBox>
<ListBox.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent" />
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="Black" />
<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Transparent" />
</ListBox.Resources>
</ListBox>
Это позволяет вам иметь LisBox, который выглядит так же, как itemscontrol, но имеет поддержку выбора.
Редактировать: Как это работаетЭто изменяет «цвета системы», другими словами, вашу тему Windows, только для этого ListBox и его дочерних элементов (мы на самом деле хотим нацелить ListboxItem
).
Например, наведение ListboxItem
обычно даетэто синий фон, но здесь мы устанавливаем его прозрачным (HighlightBrushKey).
Редактировать (30 июня 2016 г.): Кажется, для последней версии Windows этого уже недостаточно, вам также нужно переопределить InactiveSelectionHighlightBrushKey
<SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightBrushKey}" Color="Transparent" />
Спасибо @packoman в комментариях