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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.