【问题标题】:How to detect mouse click outside listview items?如何检测鼠标在列表视图项目之外的点击?
【发布时间】:2014-12-26 00:27:48
【问题描述】:

我有一个包含几个项目的 ListView,所以每当我选择一个特定项目时,都会发生相应的事件。此外,当用户单击 ListView 中的空白空间(没有项目)时,我还想创建一些事件。但是,我尝试为 ListView 创建 MouseClick 和 SelectionChanged,它仍然无法检测到鼠标在项目外的单击。

【问题讨论】:

  • WPF 还是表单?使用标签。
  • 为什么需要检测项目外的鼠标点击?您在上面说过您希望在单击 ListViewItem 时触发一个事件,对吧?
  • @furkle,因为我想当用户在列表视图之外单击时,我重置了一些标志。

标签: c# winforms c#-4.0


【解决方案1】:

您可以捕获 MouseDown 事件 - 它适用于外部空间

【讨论】:

    【解决方案2】:

    这可能有点超出您的设计范围,但这是在 MVVM 设计中很容易做到的事情。不必担心用户是否单击了某个项目,或者 ListView 中的任何其他非项目空间,您只需 OneWayToSource 或 TwoWay 将属性绑定到 ListView 的 SelectedItem。然后,只要设置了该值,您就可以在属性的 setter 字段中执行您想要的任何代码。

    在您的 XAML 中:

    <ListView SelectedItem="{Binding YourSelectedItem Mode=OneWayToSource}"></ListView>
    

    然后在 ViewModel 中充当 ListView 的 DataContext:

    private object yourSelectedItem = new object();
    public object YourSelectedItem
    {
        get { return yourSelectedItem; }
        set
        {
             yourSelectedItem = value;
             CorrespondingEvent();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2014-10-10
      • 2011-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-17
      • 1970-01-01
      • 2020-04-18
      相关资源
      最近更新 更多