如何确定单击了哪个节点。 Silverlight树视图

时间:2010-07-20 08:11:26

标签: wpf silverlight

如何确定执行哪个节点点击? 来自silverlight工具包的Treeview。

在MouseRightButtonUp中,我需要获取节点:

private void treeView_MouseRightButtonUp(object sender,MouseButtonEventArgs e)

1 个答案:

答案 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();