单击WPF TreeView项目

Wei*_*uan 5 wpf treeview events click

我是WPF中的事件的问题.假设我有一个底层数据模型和一个树视图来呈现数据.我想做的最简单的事情是,当我点击一个项目时,我会对与该项目相关的基础数据做一些事情.

我尝试使用了MouseLeftButtonDown事件Textblock,但是发件人对象就是它Textblock本身,我无法访问底层数据.

现在我也尝试使用这样的MouseLeftButtonDown事件TreeViewItem:

<TreeView.ItemContainerStyle>
    <Style TargetType="{x:Type TreeViewItem}">
         <EventSetter Event="MouseLeftButtonDown" Handler="itemClicked"/>
    </Style>
</TreeView.ItemContainerStyle>
Run Code Online (Sandbox Code Playgroud)

但我没有得到处理程序调用.

那我该怎么做呢?有某种标准方法吗?

mak*_*akc 6

MouseLeftButtonDown事件是一个冒泡事件,它在我的猜测选择器的路径中被处理.您可以使用snoop查看谁处理了该事件.使用PreviewMouseLeftButtonDown/SelectedItemChanged或在您的情况下MouseDoubleClick将解决问题.

<TreeView>
  <TreeView.ItemContainerStyle>
    <Style TargetType="{x:Type TreeViewItem}">
        <EventSetter Event="MouseDoubleClick"
                Handler="itemDoubleClicked"/>
    </Style>
  </TreeView.ItemContainerStyle>
</TreeView>
Run Code Online (Sandbox Code Playgroud)