Dentro de un evento, me gustaría enfocar un TextBox específico dentro de la plantilla de ListViewItem. El XAML es el siguiente:¿Cómo puedo acceder a ListViewItems de un WPF ListView?
<ListView x:Name="myList" ItemsSource="{Binding SomeList}">
<ListView.View>
<GridView>
<GridViewColumn>
<GridViewColumn.CellTemplate>
<DataTemplate>
<!-- Focus this! -->
<TextBox x:Name="myBox"/>
He intentado lo siguiente en el código detrás:
(myList.FindName("myBox") as TextBox).Focus();
pero me parece haber entendido mal los documentos FindName()
, porque devuelve null
.
También el ListView.Items
no ayuda, ya que (por supuesto) contiene mis objetos de negocio de la envolvente y no hay ListViewItems.
Tampoco myList.ItemContainerGenerator.ContainerFromItem(item)
, que también devuelve un valor nulo.
Esta es definitivamente la respuesta. Para agregar algo de información, noté que el evento se invoca dos veces. La primera vez que ContainerFromItem produce un valor nulo, mientras que la segunda vez devuelve el objeto listviewitem esperado. ¡Este me salvó el día! – g1ga
Este evento no está expuesto en WinRT –