Innerhalb eines Ereignisses möchte ich den Fokus auf eine bestimmte TextBox innerhalb der ListViewItem Vorlage legen. Die XAML sieht wie folgt aus:Wie kann ich auf die ListViewItems eines WPF-ListView zugreifen?
<ListView x:Name="myList" ItemsSource="{Binding SomeList}">
<ListView.View>
<GridView>
<GridViewColumn>
<GridViewColumn.CellTemplate>
<DataTemplate>
<!-- Focus this! -->
<TextBox x:Name="myBox"/>
Ich habe versucht, die folgenden in der Code-behind:
(myList.FindName("myBox") as TextBox).Focus();
aber ich glaube, die FindName()
docs falsch verstanden zu haben, denn es null
zurückgibt.
Auch die ListView.Items
hilft nicht, denn das enthält (natürlich) meine gebundenen Business-Objekte und keine ListViewItems.
Keine myList.ItemContainerGenerator.ContainerFromItem(item)
, die auch Null zurückgibt.
Dies ist definitiv die Antwort. Um einige Informationen hinzuzufügen, habe ich festgestellt, dass das Ereignis zweimal aufgerufen wird. Das erste Mal, dass ContainerFromItem einen Nullwert erzeugt, während es das zweite Mal das erwartete listviewitem-Objekt zurückgibt. Dieser rettete meinen Tag! – g1ga
Dieses Ereignis wird auf WinRT –