【发布时间】:2016-04-25 16:41:03
【问题描述】:
我为ListView 定义了ItemClick 事件处理程序。事件处理程序被调用,但是当我第一次单击ListViewItem 时,ListView 的SelectedItem 为空,SelectedIndex 为-1。但是,当ListView 中未选择任何内容时,我也想在第一次单击时检索SelectedItem。还有其他解决方案吗?谢谢。
【问题讨论】:
我为ListView 定义了ItemClick 事件处理程序。事件处理程序被调用,但是当我第一次单击ListViewItem 时,ListView 的SelectedItem 为空,SelectedIndex 为-1。但是,当ListView 中未选择任何内容时,我也想在第一次单击时检索SelectedItem。还有其他解决方案吗?谢谢。
【问题讨论】:
正如 miskohut 指出的,您可以使用ItemClickEventArgs,这是一个示例
private void listView_ItemClick(object sender, ItemClickEventArgs e)
{
MyItemModel item = (MyItemModel)e.ClickedItem;
//TODO:
}
【讨论】:
答案很简单。
`ItemClickEventArgs`
包含属性ClickedItem,这是ListView的DataContext类型。
【讨论】:
更适合点击事件,获取被点击的项目索引。例如,
private void Column_ItemClick(object sender, ItemClickEventArgs e)
{
ListView listView = (ListView)sender;
Tile clickedMenuItem = (Tile)e.ClickedItem; // Typecast the clicked menu item back to the content type of each list view item
// Key line is here:
int itemNumber = listView.Items.IndexOf(clickedMenuItem);
}
在上面listView.ItemClick += Column_ItemClick事件的点击事件中,itemNumber整数是被点击的列表视图项的索引。
此解决方案避免了选定项目的-1 索引响应,因为选择项目的点击事件仅在第二次单击菜单后发生。
【讨论】: