Trong một sự kiện, tôi muốn đặt trọng tâm vào một TextBox cụ thể trong mẫu của ListViewItem. Các XAML trông như thế này:Làm thế nào tôi có thể truy cập vào ListViewItems của một ListView WPF?
<ListView x:Name="myList" ItemsSource="{Binding SomeList}">
<ListView.View>
<GridView>
<GridViewColumn>
<GridViewColumn.CellTemplate>
<DataTemplate>
<!-- Focus this! -->
<TextBox x:Name="myBox"/>
Tôi đã thử những điều sau đây trong các mã sau:
(myList.FindName("myBox") as TextBox).Focus();
nhưng tôi dường như đã hiểu lầm FindName()
tài liệu, bởi vì nó sẽ trả về null
.
Ngoài ra, ListView.Items
không giúp ích gì, bởi vì điều đó (tất nhiên) chứa các đối tượng kinh doanh bị ràng buộc của tôi và không có ListViewItems.
Không myList.ItemContainerGenerator.ContainerFromItem(item)
, cũng trả về giá trị rỗng.
Điều này chắc chắn là câu trả lời. Để thêm một số thông tin, tôi nhận thấy rằng sự kiện được gọi hai lần. Lần đầu tiên ContainerFromItem tạo ra một giá trị null, trong khi lần thứ hai nó trả về đối tượng listviewitem mong đợi. Điều này đã cứu ngày của tôi! – g1ga
Sự kiện này không được hiển thị trên WinRT –