如何为WPF中的TreeView右键单击左键单击行为?

时间:2011-04-21 17:23:04

标签: c# .net wpf xaml treeview

当我左键单击TreeView时,它会自动选择鼠标下的项目。如何右键单击这样做,右键单击时,它还会选择鼠标下的项目?

我想这样做,因为当我右键单击时,我会根据TreeView的{​​{1}}在SelectedItem更改时设置e.NewValue的上下文菜单。但右键单击本身不会更改TreeView_SelectedItemChanged,这就是出现错误菜单的原因。或者我必须先左键单击我想要的项目,然后右键单击。

关于如何做到这一点的任何想法?

2 个答案:

答案 0 :(得分:1)

覆盖右键单击事件。 Here is an example to do it

答案 1 :(得分:1)

关于使用鼠标按下事件的正确回答是正确的,但您确定需要Visual Tree Helper和Hit Testing吗?你可能会尝试类似的东西:

var parent = this.DataContext as Parent;
var clicked = (sender as FrameworkElement).DataContext as Child;
parent.SelectedChild = clicked;

请记住,您通常可以将您的viewmodel对象作为FrameworkElement的DataContext。使用Visual Tree和Hit Testing不会经常出现。