1
我有一個ListBox
與SelectionMode="Extended"
。您只能通過按住ctrl並單擊它來取消選擇最後一個項目。我希望能夠在不改變Extended
選擇模式以外的行爲的情況下點擊它而取消選擇該項目。在具有擴展選擇模式的列表框中單擊取消選擇
我只發現one question關於此主題,它實際上有一個不同的目標(可以通過單擊ListBox
以外的地方點擊取消所有項目)。
我有一個ListBox
與SelectionMode="Extended"
。您只能通過按住ctrl並單擊它來取消選擇最後一個項目。我希望能夠在不改變Extended
選擇模式以外的行爲的情況下點擊它而取消選擇該項目。在具有擴展選擇模式的列表框中單擊取消選擇
我只發現one question關於此主題,它實際上有一個不同的目標(可以通過單擊ListBox
以外的地方點擊取消所有項目)。
如果我理解您的要求正確,你可以處理PreviewMouseLeftButtonDown
事件的ListBoxItem
容器,如果它已經選擇去選擇它:
<ListBox SelectionMode="Extended">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<EventSetter Event="PreviewMouseLeftButtonDown" Handler="OnMouseLeftButtonDown"/>
</Style>
</ListBox.ItemContainerStyle>
<ListBoxItem>1</ListBoxItem>
<ListBoxItem>2</ListBoxItem>
<ListBoxItem>3</ListBoxItem>
</ListBox>
private void OnMouseLeftButtonDown(object sender, MouseEventArgs e)
{
ListBoxItem lbi = sender as ListBoxItem;
if (lbi != null)
{
if (lbi.IsSelected)
{
lbi.IsSelected = false;
e.Handled = true;
}
}
}
這應該讓你能取消選擇一個項目而不使用CTRL
鍵。
所以基本上你想要點擊一個選定的項目應該取消選擇它,對吧? – mm8
@ mm8是的。如果您認爲我的問題還不夠清楚,請隨時編輯它。不幸的是,我有時覺得我寫的東西應該很容易被大家理解,而事實上並非如此。 –