Imposta l’elemento attivo in ListView WPF

c‘è un modo per realizzare questa funzionalità da WinForms in WPF?

ListView.FocusedItem = ListView.Items[itemToFocusIndex] 

Sto cercando di impostare manualmente la messa a fuoco (non selezionare) sull’elemento in WPF ListView. Da System.Windows.Controls . Grazie.

Ci sono due tipi di focus in WPF – Keyboard Focus e Logical Focus. Questo link può darti maggiori informazioni sulla messa a fuoco in WPF.

Puoi fare questo:

 ListViewItem item = myListView.ItemContainerGenerator.ContainerFromIndex(index) as ListViewItem; item.Focus(); 

È anche ansible chiamare

 Keyboard.Focus(item); 

Se vuoi anche scorrere la ListView sulla posizione dell’object, aggiungi questo:

 myListView.ScrollIntoView(item); 

NOTA IMPORTANTE: affinché funzioni, è necessario impostare VirtualizingStackPanel.IsVirtualizing="False" sul tuo ListView , che potrebbe causare un rallentamento. Il motivo per cui questa proprietà associata è richiesta è che quando ListView è virtualizzato (che è per impostazione predefinita), i ListViewItems non vengono creati per gli elementi che non vengono visualizzati sullo schermo, il che causerà ContainerFromIndex() per restituire null .

Credo che tu possa usare Keyboard.FocusedElement per ottenere l’elemento focalizzato nella listview.

 Keyboard.FocusedElement 

dovrebbe restituire l’elemento focalizzato

  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 

Gli oggetti ListView sono UIElements, quindi usa semplicemente UIElement.Focus() . ad esempio, listViewItem.Focus() o button.Focus() e così via.