我对WPF中的事件有疑问。假设我有一个基础数据模型和一个用于显示数据的树形 View 。我想做的最简单的事情是,当我单击一个项目时,我将使用与该项目相关联的基础数据来做某事。
我尝试使用MouseLeftButtonDown
的Textblock
事件,但发送方对象只是Textblock
本身,因此无法访问基础数据。
现在,我还尝试使用MouseLeftButtonDown
的TreeViewItem
事件,如下所示:
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<EventSetter Event="MouseLeftButtonDown" Handler="itemClicked"/>
</Style>
</TreeView.ItemContainerStyle>
但是我没有得到处理程序的调用。
那么我应该怎么做呢?有某种标准方法吗?
最佳答案
MouseLeftButtonDown事件是一个冒泡事件,在我的猜测选择器的路由中得到了处理。
您可以使用snoop查看事件的处理者。
使用PreviewMouseLeftButtonDown/SelectedItemChanged或在您的情况下使用MouseDoubleClick可以解决此问题。
<TreeView>
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<EventSetter Event="MouseDoubleClick"
Handler="itemDoubleClicked"/>
</Style>
</TreeView.ItemContainerStyle>
</TreeView>
关于WPF TreeView项目已单击,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16584627/