我有以下代码检测某个点下面的Silverlight应用程序中的所有元素
然后将它们过滤为特定类型的那些 - CardButton
IEnumerable<UIElement> elementsBeneathCursor =
VisualTreeHelper.FindElementsInHostCoordinates(new Point(xPosn, yPosn), Application.Current.RootVisual);
IEnumerable<CardButton> cardsBeneathCursor = elementsBeneathCursor.OfType<CardButton>();
即使我在调试器中检查elementsBeneathCursor
,我也可以看到有两个类型为CardButton
的元素
然而,当我应用OfType<>
过滤器时,结果列表为空
出了什么问题?
答案 0 :(得分:3)
结果列表不会实际为空...但如果这些元素实际上都不是CardButton
,则序列将为空。请注意,OfType
不执行任何自定义转换,因此如果您希望这些转换发生,则可以解释它。
尝试浏览未过滤的列表,并打印出在每个元素上调用GetType
的结果,以查看真正的内容。