获得鼠标悬停的控制类型

时间:2010-02-18 11:42:21

标签: silverlight

我想在鼠标悬停时获得控件的类型。请帮忙

2 个答案:

答案 0 :(得分:1)

您可以使用MouseMove事件获取鼠标当前移动的UIElement类型。由于这是一个冒泡事件,您可以将处理程序附加到容器,例如Canvas。

可以从MouseEventArgs OriginalSource属性中获取鼠标当前移动的UIElement。

因此,要确定鼠标移动的类型,您可以使用以下代码: -

void Canvas_MouseMove(object sender, MouseEventArgs e)
{

    Type currentType = e.OriginalSource.GetType();
    // Make decisions based on value of currentType here
}

然而,您需要小心,当用户移动鼠标时,MouseMove会频繁触发,因此您可能希望延迟任何繁重的工作,直到最后一次鼠标移动后有一段时间。

遗憾的是,事件中没有冒泡鼠标。

另一种方法是将相同的MouseEnter处理程序附加到您添加到Canvas的每个子UIElement。在这种情况下,您可以使用sender代替e.OriginalSource。如果从Canvas中删除元素,则必须小心删除处理程序,否则可以创建看起来像内存泄漏的内容。

答案 1 :(得分:0)

mouse_enter事件添加到控件中。

您可以使用以下代码获取类型

var x = sender.GetType();

然后您可以使用以下内容进行比较:

if (x.Equals(typeof(TreeView)))