取消选择具有扩展选择模式的WPF列表框
我有一个带扩展选择模式的简单列表框。 选择工作几乎完全正常,就像它在资源管理器中工作。 但取消选择并没有真正发挥作用。 我想要的是当我点击列表框中元素范围之外的东西时,我希望取消选择所有元素。 默认情况下,我似乎没有这样做,我做了一个涉及selectionchanged和mouseup的黑客攻击来破解它。 但必须有更好的方法。 有任何想法吗?
添加取消选择function并不是那么脏,而且你正处于正确的轨道上。 主要问题是,默认情况下,ListBox中的ListBoxItems将一直延伸,因此很难不点击一个。
下面是一个示例ListBox,它修改了默认的ItemContainerStyle,以便项目只占据列表的左侧,并且项目之间也有一些间距。
Item 1 Item 2 Item 3 Item 4
要取消选择所选项,我们只需要在EventHandler中将SelectedItem设置为null。 当我们单击ListBoxItem时,它将处理MouseDown / Click等以设置SelectedItem或修改SelectedItems。 因此,以及RoutedEvents的性质,我们只需要在ListBox中处理MouseDown。 单击ListBox内的某个位置时,它不是项目的一部分。
private void ListBox_MouseDown(object sender, MouseButtonEventArgs e) { (sender as ListBox).SelectedItem = null; }
我用过myListBox。 SelectedItems.Clear() 。 大多数选定的项目集合是只读的,但不是列表框。
- 带文本的条形码使用ItextSharp
- WindowsForm PictureBox.Image为null,即使表单中显示了图像
- 使用async / await和任务优化火灾和忘记
- ExecuteNonQuery不返回结果
- ClickOnceInstall CefSharp Winforms问题
- 关闭对话框和启动对话框的表单
- 将System.Windows.Media.Imaging.BitmapSource转换为System.Drawing.Image
- 如何从Visual Studio Team Services运行ASP.NET核心entity framework迁移
- C#4会允许“动态铸造”吗? 如果没有,C#应该支持吗?