2012-01-13 60 views
0

我想实现一个用户控件的拖放功能。最好的方法来查找控件下降usercontrol

我已经设法使用谷歌正常工作,但是,当放弃一个控件时,我希望找到所有可能或不可能在其下的类似控件。

我目前的方式是检查每个控件,看看它是否在下降的控制下。但我想知道是否有更好的方法,比如可以检查给定范围内的控件的查找控件函数?

+0

¿你的意思走线槽逻辑树? – NestorArturo 2012-01-13 15:07:18

+0

如果我想知道逻辑树是什么,那么我可能意味着在逻辑树中漫步。但正如我在帖子中所说的那样。我不想查看每一个控件,都可以找到与应用程序的坐标相同的控件,在这些坐标下我放弃了控件。 – 2012-01-13 15:26:42

回答

1

,你可以使用此功能: http://msdn.microsoft.com/en-us/library/system.windows.media.visualtreehelper.findelementsinhostcoordinates%28v=vs.95%29.aspx

void xy_MouseMove(object sender, MouseEventArgs e) 
    { 
     if (m_IsDraging) 
     { 
      var res = VisualTreeHelper.FindElementsInHostCoordinates(e.GetPosition(null), elemenetWhichChildrenYouWantToCheck); 
      //... check res for drop elements and react 
     } 
    } 

或者你可以只的MouseLeftButtonUp事件中使用此功能

+0

完美的作品! – 2012-01-16 12:22:49