프로그래밍/WPF, Silverlight

[WPF/Silverlight] 기존 레이아웃에서 다른 레이아웃으로 객체를 옮기려고 할때 나는 에러

당근천국 2011. 11. 22. 01:45
보통은 이미 다른 자식이라고 뜨는데 어떤경우에는 값이 범위를 벗어났다고 뜹니다.
차일드로 지정한녀석을 다시 지정하려고 할때 나는 오류인데 말이죠-_-;


보통 이렇게 뜨는게 맞습니다.

그런데 이렇게 뜨죠.

원인은 "이미 다른자식입니다"와 같습니다.
그렇기 때문에 이미 다른곳에 소속인 객체를 해당 소속에서 지워 주면됩니다.

//컨트롤 배열 생성
this.btnTest = new Button[10];
//컨트롤 초기화
for (int i = 0; i < 10; ++i)
{
	this.btnTest[i] = new Button();
}

this.btnTemp = this.btnTest[0];

this.gridTemp1.Children.Add(this.btnTemp);

this.gridTemp2.Children.Add(this.btnTest[1]);

//옮길 객체를 가져온다.
Button btnMyTemp = this.gridTemp1.Children[0] as Button;

if (null != btnMyTemp)
{
	//해당 객체를 기존 소속에서 지워준다.
	this.gridTemp1.Children.Remove(btnMyTemp);
}

this.gridTemp2.Children[0] = btnMyTemp;

 
Remove로 객체를 지우면 되죠.

보통 레이아웃상에서 같은 객체를 추가하면 자동으로 기존 객체가 지워지는데 다른 레이아웃으로 옮길때는 자동으로 지워주지 않는것 같습니다 -_-;;
(엄밀이 말해 객체는 주소만 전달해 주기 때문에 기존객체가 자동으로 지워지는 것이 아닙니다. 기존객체가 이동하는 것이죠.)