如何将MenuItem从一个ContextMenu复制到另一个ContextMenu

问题描述:

如何复制我在一个ContextMenu中创建的MenuItem并复制它,以便我可以在第二个ContextMenu中使用它?如何将MenuItem从一个ContextMenu复制到另一个ContextMenu

我试图直接复制并删除它,但我得到元素已经有一个逻辑父项。它必须在与新父母连接之前从旧父母分离。

foreach(MenuItem mi in menuOptions.Items) { 
    entityRightClick.Items.Add(mi); 
    menuOptions.Items.Remove(mi); 
} 

我尝试使用ItemContainerGenerator抓住了菜单项,它给了我一个空白的菜单项(调试器说,这是空)根据你的错误消息

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); 
} 
+0

这给了我'System.InvalidOperationException:集合被修改;枚举操作可能无法执行。“当我这样做。 – 2012-07-05 16:43:42

+0

doh!当然,因为foreach循环:)所以这样做:List items = new List (menuOptions.Items); menuOptions.Items.Clear; (项目中的MenuItem mi){entityRightClick.Items.Add; } //对不起,格式为 – Kell 2012-07-05 16:48:41

+1

将menuOptions改为List 会更容易吗?它是否将MenuItems绑定到列表,就像它对ContextMenu一样? – 2012-07-05 16:54:21