В рамках события я хотел бы обратить внимание на конкретный TextBox в шаблоне ListViewItem. XAML выглядит следующим образом:Как я могу получить доступ к ListViewItems в WPF ListView?
<ListView x:Name="myList" ItemsSource="{Binding SomeList}">
<ListView.View>
<GridView>
<GridViewColumn>
<GridViewColumn.CellTemplate>
<DataTemplate>
<!-- Focus this! -->
<TextBox x:Name="myBox"/>
Я попытался следующие в коде позади:
(myList.FindName("myBox") as TextBox).Focus();
, но мне кажется, что неправильно поняли FindName()
документы, потому что она возвращает null
.
Кроме того, ListView.Items
не помогает, поскольку это (конечно) содержит мои связанные бизнес-объекты и не содержит ListViewItems.
Также myList.ItemContainerGenerator.ContainerFromItem(item)
, который также возвращает null.
Верьте или нет, это помогло мне с чем-то несвязанной, что я пытался выяснить. Как сфокусироваться на следующем текстовом поле в сетке при нажатии клавиши вниз! Итак, +1. – RichardOD 2011-05-24 20:41:40
вот сообщение, если вы заинтересованы: http://northdownsolutionslimited.co.uk/post/How-to-focus-on-the-next-row-textbox-in-a-WPF-DataGrid.aspx – RichardOD 2011-05-24 21:24:02
Проблема с это то, что - в зависимости от * когда * вы это называете - «ViewItems» еще не создан. Таким образом, необходимо прослушать событие StatusChanged, как описано в моем ответе. – 2012-10-27 07:19:23