WPF: Usuń kropkowane obramowanie wokół elementu z zaznaczonym fokusem w stylizowanej liście

84

Mam poziomą listę z niestandardowym szablonem controlIemplate. Po zaznaczeniu zaznaczonego elementu zostanie wyświetlona kropkowana ramka. Czy ktoś wie, jak się go pozbyć?

Vegar
źródło

Odpowiedzi:

164

Musisz ustawić FocusVisualStyle każdego ListBoxItem na null. Kroki są poniżej

1) Utwórz ItemContainerStyle dla ListBox

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

2) Ustaw ten styl na Listbox

<ListBox ItemContainerStyle="{DynamicResource ListBoxItemStyle1}"
Jobi Joy
źródło
5
Ta odpowiedź działa świetnie, ale tutaj jest ogromna uwaga: jeśli użyjesz tej metody, twoje elementy sterujące nie będą wyświetlać żadnego wskaźnika, który jest skoncentrowany w systemie Windows 8! Po FocusVisualStylewyłączeniu w systemie Windows 7 elementy sterujące, takie jak Przyciski, nadal zachowują niebieskie ogólne podświetlenie, ale w systemie Windows 8 całkowicie niemożliwe jest stwierdzenie, która kontrolka w grupie jest aktywna.
Evan Wondrasek
Dobrze wiedzieć. W tym przypadku celem było usunięcie stylu wizualnego elementu listy zawierającego więcej kontrolek. Formanty podrzędne nadal będą miały nienaruszony styl skupienia.
Vegar