5

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

我尝试使用 的MouseLeftButtonDown事件Textblock,但是发送者对象只是它Textblock本身,我无法访问底层数据。

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

<TreeView.ItemContainerStyle>
    <Style TargetType="{x:Type TreeViewItem}">
         <EventSetter Event="MouseLeftButtonDown" Handler="itemClicked"/>
    </Style>
</TreeView.ItemContainerStyle>

但是我没有调用处理程序。

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

4

1 回答 1

7

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

<TreeView>
  <TreeView.ItemContainerStyle>
    <Style TargetType="{x:Type TreeViewItem}">
        <EventSetter Event="MouseDoubleClick"
                Handler="itemDoubleClicked"/>
    </Style>
  </TreeView.ItemContainerStyle>
</TreeView>
于 2013-05-16T15:18:47.913 回答