我有ListBox
SelectionMode="Extended"
。您只能在单击时按住 ctrl 取消选择最后一项。我希望能够通过点击它来取消选择该项目,同时不更改Extended
选择模式的行为。
我只找到关于此主题的one question,它实际上有不同的目标(能够通过点击ListBox
外部来取消选择所有项目。)
答案 0 :(得分:1)
如果我正确理解了您的要求,您可以处理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
键的情况下取消选择项目。