2012-07-05 6 views
4

한 ContextMenu에서 만든 MenuItem을 복사하여 두 번째 ContextMenu에서 사용할 수 있도록 복사하는 방법은 무엇입니까?한 ContextMenu의 MenuItem을 다른 ContextMenu로 복사하는 방법

직접 복사하고 제거하려고했으나 요소에 이미 논리 상위가 있습니다. 새 부모와 연결되기 전에 부모와 분리해야합니다.

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

나는 ItemContainerGenerator를 사용하여 MenuItem을 잡아 시도, 그것은 당신의 오류 메시지에

for(int i = 0; i < menuOptions.Items.Count; i++) { 
    MenuItem temp = new MenuItem(); 
    temp = menuOptions.ItemContainerGenerator.ContainerFromIndex(i) as MenuItem; 
    entityRightClick.Items.Add(temp); 
} 

답변

3

을 바탕으로, 나는 이것을 기대 (디버거가 null 인 것을 말한다) 나에게 빈의 MenuItem을 준 작품 (비록 내가 그것을 테스트하지 않은) :

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

그건 내가'System.InvalidOperationException : 컬렉션이 수정되었습니다; 열거 연산이 실행되지 않을 수 있습니다. –

+0

doh! 예, 물론, foreach 루프를 마쳤습니다 :) 이렇게 : List items = new List (menuOptions.Items); menuOptions.Items.Clear; foreach (항목의 MenuItem mi) {entityRightClick.Items.Add; } // 서식을 잘못 작성한 경우 – Kell

+1

menuOptions 목록을 더 쉽게 만들 수 있습니까 ? ContextMenu와 마찬가지로 MenuItem을 List에 바인딩합니까? –

관련 문제