Добрый день столкнулся с такой проблемой: функция IndexOf класса ObservableCollection всегда возвращает -1. Вот код:
ObservableCollection<Item> FilterMask = new ObservableCollection<Item>();
foreach(Worker w in ListWorker)
{
if(w.Directions.Count == 0) continue;
Item ForFilter = new Item() { Text = w.Directions[0], IsSelected = true };
if (FilterMask.IndexOf(ForFilter) == -1)
FilterMask.Add(ForFilter);
}
Пример класса Item:
public class Item : INotifyPropertyChanged
{
string _Text;
public string Text
{
get { return _Text; }
set
{
_Text = value;
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs("Text"));
}
}
bool _IsSelected;
public bool IsSelected
{
get { return _IsSelected; }
set
{
_IsSelected = value;
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs("IsSelected"));
}
}
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
#endregion
}
В FilterMask появляются дубликаты, чего не должно быть согласно коду=)
Разумеется, возвращает -1
.
Ты создаёшь новый объект класса Item и ищешь его в коллекции. Он туда ещё не добавлен. Если ты хочешь, чтобы твой код работал, перегрузи в Item
методы Equals
и GetHashCode
. Или полноценно реализуй интерфейс IEquatable<T>
.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
documentquerySelector('body')
Всем привет! Пытаюсь создать игру(кликер)Кликая на настройки(settings), запускается функция, в которую вложены еще несколько функций