代码之家  ›  专栏  ›  技术社区  ›  anon

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

  •  0
  • anon  · 技术社区  · 14 年前

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

    2 回复  |  直到 14 年前
        1
  •  1
  •   Falcon    14 年前

    是的,这是可能的。请出示您的密码以便我们能更好地帮助您。

    你要找的可能是反省。

    你知道你可以用 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);
    
        2
  •  2
  •   Sascha    14 年前

    你可以做个测试。基本上你得到了相对于你的窗口的点,然后看看视觉树的哪个元素被击中了。手边没有代码示例,但在google上使用HitTest和WPF会发现很多。