#c# #wpf #collections
#c# #wpf ( ВП ) #Коллекции #wpf
Вопрос:
все, у меня есть вопрос, как определить, содержит ли коллекция элементы определенного типа? Например, у меня есть ItemCollection элемента управления ItemControl
var items = comboBox.Items;
Мне нужно знать, какой тип элемента в коллекции Items это мой вопрос
например, мне нужно определить, является ли Items коллекцией элементов типа string или DependencyObject или другого типа.
Помогите мне, пожалуйста, решить эту проблему. Заранее спасибо.
Комментарии:
1. Итак, где именно ваша реализация терпит неудачу?
2. Извините, я все еще не понимаю вашего вопроса. Что не так с вашим текущим подходом?
3. Смотрите обновления в вопросе и заголовке вопроса
4. Я присоединяюсь к @Heinzi в стремлении понять вашу проблему. Элементы [i]. GetType() вернет тип элемента в позиции [i], и вы можете сравнить это с typeof(строка) или typeof(DependencyObject)…
Ответ №1:
легко с Linq:
var itemsOfTypeString = comboBox.Items.OfType<string>();
var itemsOfTypeDependencyObject = comboBox.Items.OfType<DependencyObject>();
Ответ №2:
List<Type> types = (from item in comboBox.Items select item.GetType()).Distinct();
Это дает список всех типов, которые отображаются в элементах вашего поля со списком.
Если вы просто хотите проверить, отображается ли один конкретный тип в вашем списке, вы можете сделать следующее:
bool containsStrings = comboBox.Items.OfType<string>.Any()
bool containsDependencyObjects = comboBox.Items.OfType<DependencyObject>.Any()
Ответ №3:
foreach (object item in comboBox.Items)
{
if (item.GetType() == typeof(string))
{
//DoYourStuff
}
}