0

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

4

2 回答 2

2

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

于 2010-11-11T10:42:53.463 回答
1

是的,有可能。请向我们展示您的代码,以便我们更好地帮助您。

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

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

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

要检测标记属性的更改,请像这样监听 DependencyPropertyChanged 事件:

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

prop.AddValueChanged(aTaggedControl, this.YourEventHandlerMethod);
于 2010-11-01T16:06:48.790 回答