Establecer el foco del elemento en ListView WPF

¿hay alguna manera de lograr esta funcionalidad de WinForms en WPF?

ListView.FocusedItem = ListView.Items[itemToFocusIndex] 

Estoy intentando configurar manualmente el foco (no seleccionar) en el elemento en WPF ListView. Desde System.Windows.Controls . Gracias.

Hay dos tipos de enfoque en WPF: Keyboard Focus y Logical Focus. Este enlace puede brindarle 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 el ListView a la posición del elemento, agregue esto:

 myListView.ScrollIntoView(item); 

NOTA IMPORTANTE: Para que esto funcione, deberá configurar VirtualizingStackPanel.IsVirtualizing="False" en su ListView , lo que puede hacer que funcione más lentamente. La razón por la que se requiere esta propiedad adjunta es que cuando ListView se virtualiza (que es de manera predeterminada), ListViewItems no se crean para elementos que no se muestran en la pantalla, lo que provocará que ContainerFromIndex() devuelva null .

Creo que puede usar Keyboard.FocusedElement para obtener el elemento enfocado en la vista de lista.

 Keyboard.FocusedElement 

debería devolver el elemento enfocado

  public void foucusItem( ListView.Item itemToFocusIndex){ int count = 0; foreach(ListView.Item item in YourListView){ if(item == itemsToFocusIndex){ ListView.Items[count].Focus(); return; } count++; } } 
 //to set focus write CollistView7.Items[TheIndItem].Selected = true; CollistView7.Select(); CollistView7.Items[TheIndItem].Focused = true; //when TheIndItem is the index 

Los elementos ListView son elementos UIE, por lo tanto, simplemente use UIElement.Focus() . por ejemplo, listViewItem.Focus() o button.Focus() y así sucesivamente.