【发布时间】:2010-04-13 03:52:22
【问题描述】:
我想将 TabItems 从一个 TabControl 动态复制或移动到另一个 TabControl。不幸的是,我得到了以下异常:
{“元素已经有一个逻辑父级。它必须先从旧父级分离,然后才能附加到新父级。”}
在将它添加到新的 TabControl 之前尝试从旧的 TabControl 中删除它会抛出我的迭代器。
【问题讨论】:
标签: wpf tabcontrol
我想将 TabItems 从一个 TabControl 动态复制或移动到另一个 TabControl。不幸的是,我得到了以下异常:
{“元素已经有一个逻辑父级。它必须先从旧父级分离,然后才能附加到新父级。”}
在将它添加到新的 TabControl 之前尝试从旧的 TabControl 中删除它会抛出我的迭代器。
【问题讨论】:
标签: wpf tabcontrol
我猜您正在使用 foreach 块来查找要删除的选项卡。迭代时不能修改集合。所以use a for loop 改为删除并缓存要删除的选项卡。
然后将其添加到新的父级。应该可以的。
不是最优雅的,但现在必须这样做。出于某种原因,Linq 没有实现 Lisp/Ruby/et.all 拒绝操作。 (或者我还没有找到它。最接近的是List<T>.RemoveAll(predicate)。如果是这样 - 你可以做类似的事情......
tabControl2.Items.AddRange( tabControl1.Items.Reject(tab => tab.Name = "MarkedOne") );
【讨论】: