2012-02-21 70 views
0

我使用RadioButton来创建自定义控件,并且想要知道当鼠标移动到左键并按住时,如何检测它?当然,我知道这是可能的VisualTreeHelper,但此方法只返回最上面的元素(不是我自己的自定义控件)。如何在C#-WPF中关闭鼠标时检测鼠标光标下的自定义控件?

+0

您确定您不是在寻找拖放吗? – CodeCaster 2012-02-21 12:54:42

+0

当然,鼠标停止时没有任何拖动的元素。 – 2012-02-21 13:00:14

回答

2

您可以使用一个片段是这样的的VisualTree深入挖掘,并返回找到指定类型的第一控制:

public static T GetVisualChild<T>(Visual parent) where T : Visual 
{ 
    T child = default(T); 
    int numVisuals = VisualTreeHelper.GetChildrenCount(parent); 
    for (int i = 0; i < numVisuals; i++) 
    { 
     Visual v = (Visual)VisualTreeHelper.GetChild(parent, i); 
     child = v as T; 
     if (child == null) 
     { 
      child = GetVisualChild<T>(v); 
     } 
     if (child != null) 
     { 
      break; 
     } 
    } 
    return child; 
} 

要找到一个MyCustomControlsomeVisual控制内:

MyCustomControl myControl = GetVisualChild<MyCustomControl>(someVisual);