0
我使用RadioButton来创建自定义控件,并且想要知道当鼠标移动到左键并按住时,如何检测它?当然,我知道这是可能的VisualTreeHelper
,但此方法只返回最上面的元素(不是我自己的自定义控件)。如何在C#-WPF中关闭鼠标时检测鼠标光标下的自定义控件?
我使用RadioButton来创建自定义控件,并且想要知道当鼠标移动到左键并按住时,如何检测它?当然,我知道这是可能的VisualTreeHelper
,但此方法只返回最上面的元素(不是我自己的自定义控件)。如何在C#-WPF中关闭鼠标时检测鼠标光标下的自定义控件?
您可以使用一个片段是这样的的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;
}
要找到一个MyCustomControl
的someVisual
控制内:
MyCustomControl myControl = GetVisualChild<MyCustomControl>(someVisual);
您确定您不是在寻找拖放吗? – CodeCaster 2012-02-21 12:54:42
当然,鼠标停止时没有任何拖动的元素。 – 2012-02-21 13:00:14