Как определить, какой узел был нажат. Silverlight дерево вид - PullRequest
3 голосов
/ 20 июля 2010

Как определить, по какому узлу был выполнен клик?Treeview из набора инструментов silverlight.

В MouseRightButtonUp мне нужно получить узел:

private void treeView_MouseRightButtonUp (отправитель объекта, MouseButtonEventArgs e)

1 Ответ

3 голосов
/ 20 июля 2010

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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...