Veo un comportamiento extraño cuando se trata de enfocar y navegar por el teclado. En el siguiente ejemplo, tengo un ItemsControl simple que ha sido modelado para que presente una lista de CheckBoxes vinculados a ItemsSource.Comportamiento de foco extraño para WPF ItemsControl simple
<ItemsControl FocusManager.IsFocusScope="True"
ItemsSource="{Binding ElementName=TheWindow, Path=ListOStrings}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<CheckBox Content="{Binding}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Por alguna extraña razón la FocusManager.IsFocusScope = "true" asignación hace que el foco del teclado a dejar de ser fijado al comprobar una casilla de verificación a través de un clic del ratón y de enfoque para saltar fuera de la ItemsControl cuando un cheque la casilla se verifica usando la barra espaciadora en el teclado. Ambos síntomas parecen apuntar a una navegación extraña cuando la casilla de verificación está marcada, pero me está costando llegar al fondo.
Este problema se produce si configuro cualquier elemento primario en el árbol visual como un ámbito de enfoque utilizando este método. Si elimino el FocusManager.IsFocusScope = "True", los problemas desaparecerán. Lamentablemente, estoy viendo este problema en un proyecto más grande en el que no puedo simplemente eliminar estos ámbitos de enfoque sin preocuparme por otras consecuencias relacionadas con el enfoque.
¿Podría alguien explicarme el extraño comportamiento que estoy viendo? ¿Es esto un error o simplemente me falta algo por completo?
+1 para una explicación del problema. Acabo de agregar la implementación del comportamiento adjunto IsEnhancedFocusScope. –
Lo único que todavía no entiendo dada esta explicación es que si tomo otro ejemplo donde configuré una grilla para ser el ámbito de enfoque con un grupo de niños que son botones y casillas de verificación, cuando hago clic en uno de estos casillas de verificación No veo la extraña pérdida de comportamiento de enfoque que veo en mis ItemsControl. ¿Por qué parece que esto solo afecta a las casillas de verificación dentro de ItemsControl? ¿Tiene algo que ver con ScrollViewer, ItemsPresenter, ...? – jpierson