我对这个小问题感到困惑已经有一段时间了。在W10下,ListView有一些奇怪的行为我无法理解。考虑一个简单的列表:
<ListView Name="myList" ItemClick="myList_ItemClick" SelectionChanged="myList_SelectionChanged" IsItemClickEnabled="True">
<ListView.Items>
<TextBlock Text="First item"/>
<TextBlock Text="Second item"/>
<TextBlock Text="Third item"/>
<TextBlock Text="Fifth item"/>
</ListView.Items>
</ListView>
代码如下:
private void myList_ItemClick(object sender, ItemClickEventArgs e)
{
Debug.WriteLine("Clicked item");
ListView list = sender as ListView;
ListViewItem listItem = list.ContainerFromItem(e.ClickedItem) as ListViewItem;
listItem.IsSelected = !listItem.IsSelected;
}
private void myList_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
Debug.WriteLine($"Selection changed -> added = {e.AddedItems.Count}, removed = {e.RemovedItems.Count}, currently selected = {myList.SelectedItems.Count}");
}
上面的代码在W8.1上运行得非常好,但在W10上遇到了问题。选择第一个项目可以正常工作,更改也可以,但我无法取消选择项目 - 从调试输出中可以看出,列表视图似乎取消了选择项目,然后立即再次选择它 - 您可以看到SelectionChanged事件触发了两次。以下是示例调试输出: 有人知道发生了什么事吗?在这种情况下如何取消选择项目?
listItem.IsSelected = false;
,改变 SelectionMode 将完成工作。但是这个技巧在我们想要进行多选时无法帮助 - 你有任何想法吗? - Romasz