【问题标题】:How do you ensure that the user has selected at least one item in a ListView?如何确保用户在 ListView 中至少选择了一项?
【发布时间】:2011-06-19 02:47:37
【问题描述】:

对于 ListView,如何才能在选择任何项目时按住控制按钮来取消选择所选索引?

非常感谢

【问题讨论】:

    标签: wpf


    【解决方案1】:

    订阅 ListView 上的 PreviewMouseButtonDown 事件。在该事件处理程序中,您可以捕获用户 ctrl 单击并标记事件已处理。那就不会传下去了。

    正如 andrea 指出的那样,他们也可以通过快捷键取消选择。相反,我认为您应该订阅 SelectionChangedEvent。然后,您可以遍历已删除的项目并将它们标记为选中:

        void list_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            foreach (var item in e.RemovedItems)
            {
                myList.SelectedItems.Add(item);
            }
        }
    

    【讨论】:

    • 这还不够,也可以使用Ctrl+Space、手写笔或其他任何方式选择项目。
    • 在这种情况下,当您的事件处理程序将被调用时,注册到 SelectionChanged 事件的其他处理程序可能已经被调用,应用程序的逻辑将不得不受到影响。
    • 这是真的,你需要小心这一点——尽管在实践中我并没有遇到太多问题。如果您真的想要安全,您将需要编写自己的 List 控件,该控件继承自 Microsoft,然后您可以在其他人有机会之前处理这些事件。
    • 只是一个想法(5 年后):为什么不使用反向布尔转换器将 IsEnabled 绑定到 IsSelected?一枪一命。
    猜你喜欢
    • 1970-01-01
    • 2016-07-03
    • 2020-10-19
    • 1970-01-01
    • 2010-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多