【问题标题】:How do I add TabItems to a TabControl from another TabControl?如何从另一个 TabControl 将 TabItems 添加到 TabControl?
【发布时间】:2010-04-13 03:52:22
【问题描述】:

我想将 TabItems 从一个 TabControl 动态复制或移动到另一个 TabControl。不幸的是,我得到了以下异常:

{“元素已经有一个逻辑父级。它必须先从旧父级分离,然后才能附加到新父级。”}

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

【问题讨论】:

    标签: wpf tabcontrol


    【解决方案1】:

    我猜您正在使用 foreach 块来查找要删除的选项卡。迭代时不能修改集合。所以use a for loop 改为删除并缓存要删除的选项卡。

    然后将其添加到新的父级。应该可以的。

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

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

    【讨论】:

    • 没有更优雅的方法吗?
    • 是的,只有通过使用 for 循环才能做到这一点的丑陋方式。不过,它可以很容易地转换为 linq 表达式。
    • 这是因为 LINQ 用于查询集合。
    猜你喜欢
    • 2011-02-09
    • 1970-01-01
    • 2013-11-23
    • 2012-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多