如果项目已被选中,ListView.SelectionChanged和ListViewItem.Selected事件不会重新触发。如果您需要重新启动它,则可以在事件触发时“取消”该项目。
private void ListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
foreach (var item in e.AddedItems.OfType<ListViewItem>())
{
Trace.WriteLine("ListViewItem Selected");
item.IsSelected = false;
}
}
因此,您可以重新选择它的广告nauseum。但是,如果您不需要实际选择,则应该使用ItemsControl。
如果您确实想要维护项目的可选能力,那么您应该查看注册到不同于ListView.SelectionChanged或ListView.Selected的事件。一个适用于此的PreviewMouseDown就像我们希望它在左右点击时发生的初始项选择一样。我们可以将它附加到单个ListViewItem上,但由于列表可能会在某个时候获得更多的项目,我们可以使用ListView的ItemContainerStyle属性将其分配给所有项目。
<ListView SelectionChanged="ListView_SelectionChanged">
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<EventSetter Event="PreviewMouseDown"
Handler="ListViewItem_PreviewMouseDown" />
</Style>
</ListView.ItemContainerStyle>
<ListViewItem>Item 1</ListViewItem>
<ListViewItem>Item 2</ListViewItem>
<ListViewItem>Item 3</ListViewItem>
<ListViewItem>Item 4</ListViewItem>
</ListView>
private void ListViewItem_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
Trace.WriteLine("ListViewItem Clicked: " + (sender as ListViewItem).Content);
}
尽管此代码可以回答这个问题的代码,提供关于为什么和/或如何代码回答了这个问题提高了其长期价值的其他方面。 – ryanyuyu 2016-01-20 17:06:30