Я не думаю, что вы предоставили достаточно кода, чтобы действительно помочь, но я вижу, что вы пытаетесь сделать.
Что вы должны сделать вместо того, чтобы поддерживать два списка, это иметь каждый список(итого 4) быть инкапсулированным в класс, который имеет следующие свойства:
- SelectedItems
ObservableCollection<T>
- AvailableItems
List<T>
- Имя
string
- Изображение
???
Свяжите SelectedItems вашей конструкции представления с SelectedItems класса, а источник данных для конструкции представления - со списком AvailableItems.Затем вам нужно подключиться к событию изменения коллекции для каждой строки и поместить свою логику, чтобы ограничить число значений столбцов.