Как добавить TabItems в TabControl из другого TabControl? - PullRequest
2 голосов
/ 13 апреля 2010

Я хочу динамически копировать или перемещать TabItems из одного TabControl в другой TabControl. К сожалению, я получаю следующее исключение:

{"Элемент уже имеет логического родителя. Он должен быть отделен от старого родителя, прежде чем он будет присоединен к новому."}

Попытка удалить его из старого TabControl перед добавлением его в новый сбрасывает мой итератор.

1 Ответ

2 голосов
/ 13 апреля 2010

Я полагаю, вы используете блок foreach, чтобы найти вкладку для удаления. Вы не можете изменить коллекцию во время итерации. Поэтому используйте цикл for вместо удаления и кэшируйте вкладку для удаления.

Затем добавьте его к новому родителю. Это должно сработать.

Не самый элегантный, но сейчас это нужно сделать. По какой-то причине в Linq не реализована операция отклонения Lisp / Ruby / et.all. (или я еще не нашел его. Ближайшая вещь - List<T>.RemoveAll(predicate). Если бы она была - вы могли бы сделать что-то вроде ...

tabControl2.Items.AddRange( tabControl1.Items.Reject(tab => tab.Name = "MarkedOne") );
...