Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何确定标记对象放置在哪个元素上?_C#_.net_Wpf_Wpf Controls_Pixelsense - Fatal编程技术网

C# 如何确定标记对象放置在哪个元素上?

C# 如何确定标记对象放置在哪个元素上?,c#,.net,wpf,wpf-controls,pixelsense,C#,.net,Wpf,Wpf Controls,Pixelsense,在我的应用程序中,我使用标记对象。现在,我想做出不同的反应,不仅是对放置在表面上的对象,而且对放置在表面上的元素。这有可能吗?我找不到关于它的任何信息。是的,这是可能的。请向我们展示您的代码,以便我们更好地帮助您 你要找的可能是反射 您知道吗,您总是可以使用is运算符检查对象是否属于特定类型 var tag = myDependencyObject.Tag; if(myDependencyObject is CheckBox) { //... } else if(myDependency

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

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

你要找的可能是反射

您知道吗,您总是可以使用
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);

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

你要找的可能是反射

您知道吗,您总是可以使用
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);

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

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

啊,是的,这不是真正的问题。如果添加了标记对象,我就不知道在哪里捕捉事件。我没有太多的代码,只是在我的主要布局中添加了TagVisualizer。如果添加了标记对象,我就不知道在哪里捕捉事件。我没有太多的代码,只是将TagVisualizer添加到我的主布局中。