Hay dos tipos de enfoque en WPF - foco del teclado y el foco lógico. This link puede darle más información sobre el enfoque en WPF.
Usted puede hacer esto:
ListViewItem item = myListView.ItemContainerGenerator.ContainerFromIndex(index) as ListViewItem;
item.Focus();
También es posible llamar
Keyboard.Focus(item);
Si también desea desplazar la ListView
a la posición del elemento, añadir lo siguiente:
myListView.ScrollIntoView(item);
NOTA IMPORTANTE: Para que esto funcione k, necesitará configurar VirtualizingStackPanel.IsVirtualizing="False"
en su ListView
, lo que puede hacer que funcione más lentamente. El motivo por el que se requiere esta propiedad adjunta es que cuando ListView
está virtualizado (lo cual es de manera predeterminada), ListViewItems
no se crean para elementos que no se muestran en la pantalla, lo que causará ContainerFromIndex()
para devolver null
.
Bueno, tengo la idea detrás de tu código, pero no funciona como _myListView.Items [itemIndex] como IInputElement; _ devuelve _null_. Los elementos de ListView son instancias de mi clase personalizada y el estilo adecuado se selecciona en tiempo de ejecución de acuerdo con la propiedad del instance. La clase no hereda de implementar ninguna clase o interfaz respectivamente; así que no puedo convertirlo a IInputElement ... – jnovacho
@jnovacho Cualquier control heredado de 'UIElement' implementa' IInputElement'. ¿Qué tipo de objeto obtienes de 'myListView.Items [itemIndex]'? –
Obtengo solo Objeto de esa Colección. – jnovacho