如何确定标记对象放置在哪个UIElement上?

时间:2010-11-01 12:46:02

标签: c# .net wpf wpf-controls pixelsense

在我的应用程序中,我使用标记对象。现在,我不仅要对放置在曲面上的对象做出不同的反应,还要对放置它的元素做出不同的反应。这有可能吗?我找不到任何有关它的信息。

2 个答案:

答案 0 :(得分:2)

你可以做一个HitTest。基本上,您可以获得相对于窗口的点,并查看可视树的哪个元素被击中。手头没有代码示例,但您会在google上找到很多使用HitTest和WPF的内容。

答案 1 :(得分:1)

是的,有可能。请告诉我们您的代码,以便我们为您提供更好的帮助。

您正在寻找的可能是反思。

您是否知道可以随时使用is运算符检查对象是否属于某种类型?

var tag = myDependencyObject.Tag;
if(myDependencyObject is CheckBox)
{
    //...
}
else if(myDependencyObject is TextBox)
{
    //...
}

要检测Tag-Property的更改,请像这样收听DependencyPropertyChanged事件:

DependencyPropertyDescriptor prop = DependencyPropertyDescriptor.FromProperty(
    FrameworkElement.TagProperty,
    typeof(FrameworkElement));

prop.AddValueChanged(aTaggedControl, this.YourEventHandlerMethod);