WPF: удалить пунктирную границу вокруг элемента с фокусом в стилизованном списке

85

У меня есть горизонтальный список с настраиваемым элементом управленияIemplate. При фокусировке выбранный элемент выделяется пунктирной рамкой. Кто-нибудь знает, как от этого избавиться?

Вегар
источник

Ответы:

165

Вам необходимо установить для FocusVisualStyle каждого ListBoxItem значение null. Шаги ниже

1) Создайте ItemContainerStyle для ListBox

<Style x:Key="ListBoxItemStyle1" TargetType="{x:Type ListBoxItem}"> 
   <Setter Property="FocusVisualStyle" Value="{x:Null}"/> ....

2) Установите этот стиль в Listbox

<ListBox ItemContainerStyle="{DynamicResource ListBoxItemStyle1}"
Джоби Джой
источник
5
Этот ответ отлично работает, но здесь стоит обратить внимание: если вы используете этот метод, ваши элементы управления не будут отображать какой-либо индикатор, который сфокусирован в Windows 8! Когда FocusVisualStyleв Windows 7 отключено, такие элементы управления, как кнопки, по-прежнему имеют общую синюю подсветку, но в Windows 8 совершенно невозможно определить, какой элемент управления в группе находится в фокусе.
Эван Вондрасек
Хорошо знать. В этом случае целью было удалить визуальный стиль для элемента списка, содержащего дополнительные элементы управления. Стиль фокуса дочерних элементов управления останется неизменным.
Vegar
Вы также можете просто добавить FocusVisualStyle="{x:Null}"в большинстве случаев.
Adephx