Dans un événement, j'aimerais mettre l'accent sur un TextBox spécifique dans le modèle de ListViewItem. Le XAML ressemble à ceci:Comment puis-je accéder aux ListViewItems d'un ListView WPF?
<ListView x:Name="myList" ItemsSource="{Binding SomeList}">
<ListView.View>
<GridView>
<GridViewColumn>
<GridViewColumn.CellTemplate>
<DataTemplate>
<!-- Focus this! -->
<TextBox x:Name="myBox"/>
J'ai essayé ce qui suit dans le code derrière:
(myList.FindName("myBox") as TextBox).Focus();
, mais il me semble avoir mal compris les FindName()
docs, car elle retourne null
.
Aussi le ListView.Items
ne aide pas, parce que (bien sûr) contient mes objets métier liés et aucun ListViewItems.
Il en va de même pour myList.ItemContainerGenerator.ContainerFromItem(item)
, qui renvoie également null.
Ceci est certainement la réponse. Pour ajouter quelques informations, j'ai remarqué que l'événement est invoqué deux fois. La première fois ContainerFromItem produit une valeur null, tandis que la deuxième fois il renvoie l'objet listviewitem attendu. Celui-ci a sauvé ma journée! – g1ga
Cet événement n'est pas exposé sur WinRT –