Как при добавлении элемента в ObservableCollection выявить и избежать копий?
У меня есть ObservableCollection класса, в котором присутствует поле Name мне надо чтобы( при создании элемента или изменении) при попытке задать уже существующее имя, выводилось сообщение о невозможности таких действий.
На твой вопрос не существует единственно верного ответа. Ответ "зависит". Ты предоставил мало информации, на вопросы не отвечаешь. Судя по всему, помощь тебе не нужна.
Борис Животное, Борис Животное, да в самом DataGrid. Знаю что не существует единственно верного ответа, я спрашиваю людей у которых есть опыт чтобы увидеть как они бы это реализовали.
jostario, чтобы понять, что тебе сказали, ты должен понимать несколько вещей: что существуют Observable коллекции. Что значит слово "коллекция". Что такое Dictionary и чем он отличается от List. ObservableCollection это тот же List, но с возможностью уведомить биндинг об изменении коллекции. Значит ObservableDictionary это тот же Dictionary, но Observable. Просто понимая эти вещи ты бы сам мог разобраться, что дальше делать и подходит ли тебе предложенный вариант.
Борис Животное, спасибо за разъяснение, но это я и так узнал, я прошу пример не потому что ничего не хочу делать, а потому что действительно хочу узнать и понять каким образом это грамотно сделать.
jostario, Сделать словарь где в качестве ключа будет значение из поля Name, а в качестве значения сам объект. При вставке проверяете есть ли в словаре такой ключ.
oleg_ods, если по уму делать, там одни словарём никак не обойдёшься. Если плюс ко всему нужно реализовать валидацию в DataGrid. А её реализовать надо, насколько я понимаю. Она нужна, когда есть возможность нажать на ячейку и введя текст добавить новое значение. Я сижу ради интереса делаю, там конца и края не видно. Хотел за пол часа - час набросать. Просто есть много кейсов, где можно накосячить (будут ошибки в будущем, при развитии проекта), если сделать всё на то самое слово.
Но в целом всё верно, можно или в словарь класть или в хэшсет и проверять, если есть в словаре или хэшсэте, то добавлять в коллекцию нельзя.