C#/WPF

WPF 지정한 요소가 이미 다른 요소의 논리자식입니다. 먼저 이 연결을 끊으십시오.

백엔드담당자 2020. 3. 27. 08:17
반응형

———21.06.01
오랜만에 봤는데 뭔내용인지 이해가 안가서;;; 다시 작성....


지정한 요소란 현재 내가 조작중인 Control.
컨트롤, 컨트롤이 담긴 변수를 재사용하려고 할 때 발생하는 문제

“지정한 요소”
ㄴParent 속성: 어떤 Control이 있다.(null 이 아니다)
ㄴㄴChild 속성: 정상적일 경우 “지정한 요소”가 할당돼야하지만 이미 다른 Control이 있다.

Solution:
(지정한요소.Parent as Parent의Type).Children.Clear()
*Parent의 Type은 모를 경우 조사식 창에 찍어보길

ex)
menu.Items.Insert(1, MenuItem); //error

(MenuItem.Parent as ContextMenu).Item.Clear(); // error 앞줄에 호출

 

 

 

———
WPF 지정한 요소가 이미 다른 요소의 논리자식입니다. 먼저 이 연결을 끊으십시오.

xaml child clear
remove child element

xaml removing all grid children

본 문제는 .add(___)하려는 컨포넌트가 이미 다른 컴포넌트에 추가되어있어 발생하는 문제.
다른 컴포넌트에서 해제 후 추가하라는 의미

문제는 이미
부모컴포넌트.child.clear();
를 통해 clear 했음에도 불구하고 제대로 연결이 끊어지지 않는 게 문제

심지어 지정컴포넌트의 Parent는 읽기 전용 속성이므로 별도의 수정도 불가능함.
이럴 땐 강제로 부모의 자식속성에 접근해서 초기화해주면 된다.

(지정컴포넌트.Parent) as Paenl).Children.Clear()



반응형