2010-04-13 83 views
2

我想动态地将TabItems从一个TabControl复制或移动到另一个TabControl。不幸的是,我得到以下异常:如何将TabItems添加到另一个TabControl的TabControl中?

{“元素已经有一个逻辑父它必须从旧的父它连接到一个新的前分离。”}

试图从删除在将它添加到新的之前抛出旧的TabControl抛出我的迭代器。

回答

2

我想你正在使用一个foreach块来找到要移除的选项卡。在迭代中不能修改集合。因此use a for loop改为删除并缓存要移除的选项卡。

然后将其添加到新的父级。这应该工作。

不是最优雅的,但它现在必须做。出于某种原因,Linq还没有实现Lisp/Ruby/et.all拒绝操作。 (或者我还没有找到它最近的是一个List<T>.RemoveAll(predicate)如果它这样做。 - 你可以做类似...

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

是不是有这样做 – 2010-04-13 04:50:20

+0

@joeb的更优雅的方式? :)见更新。代码不能在评论中正确显示。 – Gishu 2010-04-13 05:13:18

+0

是的,只有通过使用for循环来做到这一点的丑陋方法。它可以很容易地转换成linq表达式。 – 2010-04-13 15:41:39

相关问题