Здравствуйте, Visor2004, Вы писали:
V>Здравствуйте, barn_czn, Вы писали:
_>>Умом понимаю что ItemsControl надо юзать, но с другой стороны что ни маленькая проблема то через какую то задницу решение.
V>Архитектура ItemsControl, не позволяет в общем случае удалить только один элемент. При изменении коллекции запускается процесс перегенерации всех элементов. Если посмотрите на реализации всяких коммерческих гридов и т.п. увидите, что там бОльшая часть этого стека переписана с нуля. В целом, такое поведение вполне себе ок, потому что для больших списков есть виртуализация и можно ресайклить контейнеры при желании. Короче, если вам нравится жрать этот кактус, то рефлектор в руки и смотрите как, что работает там в потрохах, может что и расковыряете (официальной документации на эту тему практически нет). Практически же, любая задача, связанная с выделением каких-либо элементов решается, через ListBox или ListView, в зависимости от сложности данных и их представления.
https://docs.microsoft.com/en-us/dotnet/api/system.windows.controls.virtualizingstackpanel?view=netframework-4.7.2
UPDATE: не заметил, что виртуализация упомянута.
Коммерческие гриды грешат изобретением велосипедов, я бы не стал ими руководствоваться в качестве примера для подражания. Вообще работа с коллекциями элементов очень гибкая за счет класса CollectionView — классы-наследники ItemsControl заточены на работу именно с ним, а не просто интерфейсом ICollectionView. Если использовать ListCollectionView в своём коде, то контролы будут оперативно реагировать на операции с ним через биндинг к ItemSource.