我正在寻找有效确定控件是否实际可见和可点击的方法。我的意思是超越检查对象的可见性属性。
我可以检查 RenderSize 并且如果任何父元素折叠,那将是 [0,0]。所以这也很简单。我还可以遍历可视化树,查看所有元素的 Opacity 是否设置为 1。
我不知道如何很好地检查这些情况:
更新 (又一个场景)
有什么更好的想法吗?我错过了什么吗?
谢谢!
最佳答案
您可以以编程方式测试 Visiblity 和 HitTestVisible
元素的属性,但超出此范围 您实际上无法测试 如果单击事件将被转发到元素或被其上的元素吞噬 - 因为阻止或转发点击可能发生在事件处理程序方法中,而您根本无法以通用方式确定。
以下面的例子为例:
ParentElement
面板是可点击的,带有 ChildElement
关于它ChildElement
附加了一个处理点击事件的事件处理程序,它是可见的,它的 HitTestVisible
属性设置为true。 ParentElement
: 在 ChildElement
的点击事件处理程序中它可以设置事件的Handled
属性为 true 将停止 ParentPanel 接收事件,或者它可以将其保留为 false,使 ParentPanel 接收事件。 因此,如果涉及自定义 EventHandler,您将无法确定某个元素是否可点击。您最多可以查看
Visiblity
和 IsHitTestVisible
子元素和父元素的属性,并使用 TransformToVisual
检查子元素/父元素相对于彼此的呈现位置方法。
关于silverlight - 确定对象是否可见和可点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5288109/