Linq - OfType <> не работает должным образом - PullRequest
2 голосов
/ 03 октября 2010

У меня есть следующий код, который обнаруживает все элементы в приложении Silverlight ниже определенной точки

затем фильтрует их, чтобы они были только для определенного типа - CardButton

IEnumerable<UIElement> elementsBeneathCursor =
                VisualTreeHelper.FindElementsInHostCoordinates(new Point(xPosn, yPosn), Application.Current.RootVisual);
            IEnumerable<CardButton> cardsBeneathCursor = elementsBeneathCursor.OfType<CardButton>();

Даже когда я проверяю elementsBeneathCursor в отладчике, я вижу, что есть 2 элемента типа CardButton Тем не менее, когда я применяю фильтр OfType<>, результирующий список будет нулевым

что не так?

1 Ответ

3 голосов
/ 03 октября 2010

Полученный список не будет на самом деле быть нулевым ... но последовательность будет пустой, если ни один из этих элементов на самом деле не будет CardButton.Обратите внимание, что OfType не выполняет никаких пользовательских преобразований, поэтому, если вы ожидали, что это произойдет, это может объяснить это.

Попробуйте просмотреть нефильтрованный список и распечатать результат вызова GetType накаждый элемент, чтобы увидеть, что это на самом деле .

...