2010-07-20 58 views

回答

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(); 
+0

也許我失去了一些東西,但如果是第二段代碼中的名字「祖先」? – Telaclavo 2012-01-15 19:31:19

+0

@Telaclavo:在應用程序的使用示例中找不到它。編輯。 – AnthonyWJones 2012-01-16 13:34:09