2014-10-30 45 views
0

我有一个ListView与几个项目,所以每当我选择一个特定的项目,将发生相应的事件。此外,我还希望创建一些事件,当用户单击以清空ListView内的空间(没有项目时)。但是,我试图为ListView创建MouseClick和SelectionChanged,但仍无法检测到鼠标单击外部项目。如何检测鼠标单击外部列表视图项目?

+0

WPF或形式?使用标签。 – 2014-10-30 04:23:14

+0

为什么你需要检测项目外的鼠标点击?你上面说过,当你点击一个ListViewItem时,你想要一个事件触发,对吧? – furkle 2014-10-30 04:37:10

+0

@furkle,因为我想当用户点击列表视图外,我重置了一些标志。 – Bent 2014-10-30 04:55:15

回答

0

这可能是你的设计范围以外的一些工作,但是这是什么样的东西,会是一个很容易做到在MVVM设计中。与其不必担心用户是否单击某个项目或ListView中的任何其他非项目空间,您可以只使用OneWayToSource或TwoWay将属性绑定到ListView的SelectedItem。然后,只要设置了该值,就可以在属性的setter字段中执行任何您想要的代码。

在您的XAML:

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

然后在视图模型作为DataContext的为您的ListView:

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

您可以捕获MouseDown事件 - 它会为外部空间