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ć?

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}"

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.