如何确定执行哪个节点点击? 来自silverlight工具包的Treeview。
在MouseRightButtonUp中,我需要获取节点:
private void treeView_MouseRightButtonUp(object sender,MouseButtonEventArgs e)
答案 0 :(得分:3)
MouseButtonEventArgs
具有OriginalSource
属性,表示生成事件的实际UIElement
。
为了发现该元素属于哪个节点,您需要遍历可视树以发现它。我使用这种扩展方法来帮助: -
public static IEnumerable<DependencyObject> Ancestors(this DependencyObject root)
{
DependencyObject current = VisualTreeHelper.GetParent(root);
while (current != null)
{
yield return current;
current = VisualTreeHelper.GetParent(current);
}
}
然后在MouseRightButtonUp
事件中,您可以使用此代码查找项目: -
TreeViewItem node = ((DependencyObject)e.OriginalSource)
.Ancestors()
.OfType<TreeViewItem>()
.FirstOrDefault();