如果項目已被選中,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