C# 如何将菜单项从一个ContextMenu复制到另一个ContextMenu

C# 如何将菜单项从一个ContextMenu复制到另一个ContextMenu,c#,wpf,contextmenu,menuitem,C#,Wpf,Contextmenu,Menuitem,如何复制在一个ContextMenu中创建的MenuItem并复制它,以便在第二个ContextMenu中使用它 我试图直接复制它并删除它,但我得到的元素已经有一个逻辑父元素。必须先将其与旧父级分离,然后才能将其附加到新父级 我尝试使用ItemContainerGenerator获取MenuItem,它给了我一个空白的MenuItem(调试器说它为null) for(int i=0;i

如何复制在一个ContextMenu中创建的MenuItem并复制它,以便在第二个ContextMenu中使用它

我试图直接复制它并删除它,但我得到的元素已经有一个逻辑父元素。必须先将其与旧父级分离,然后才能将其附加到新父级

我尝试使用ItemContainerGenerator获取MenuItem,它给了我一个空白的MenuItem(调试器说它为null)

for(int i=0;i
根据您的错误消息,我希望它能正常工作(尽管我还没有测试它):


这给了我
System.invalidoOperationException:集合被修改;枚举操作可能无法执行。
当我执行该操作时。doh!是的,当然,因为foreach循环:)所以这样做:List items=newlist(menuOptions.items);menuOptions.Items.Clear;foreach(items中的MenuItem mi){entityRightClick.items.Add;}//很抱歉设置了格式将菜单选项改为列表会更容易吗?它会像使用ContextMenu一样将菜单项绑定到列表吗?太棒了。如果我改为使用列表,那么它将不会绑定到任何对象,直到我在需要时实际添加它为止。@Kell感谢您的解决方案,但我需要制作一个
列表
,因为ItemsCollection可能不仅包含
菜单项
对象(例如分隔符)。
foreach(MenuItem mi in menuOptions.Items) { 
    entityRightClick.Items.Add(mi);
    menuOptions.Items.Remove(mi);
}
for(int i = 0; i < menuOptions.Items.Count; i++) {
    MenuItem temp = new MenuItem();
    temp = menuOptions.ItemContainerGenerator.ContainerFromIndex(i) as MenuItem;
    entityRightClick.Items.Add(temp);
}
foreach(MenuItem mi in menuOptions.Items) 
{      
     menuOptions.Items.Remove(mi);
     entityRightClick.Items.Add(mi);
 }