상황설명
UserControl 부모와 UserControl 자식이
UserControl.Resource 하위에 같은 이름을 가진 스토리보드를 가지고 있는 상황에서,
자식을 생성하여 부모의 LayoutRoot.Children에 Add를 하려고 시도하면,
경우에 따라서 다음 그림과 같이 ArgumentException을 유발합니다.
실험조건
Fafamama 클래스 - 부모 역할을 하는 UserControl 입니다.
Son 클래스 - 자식 역할을 하는 UserControl입니다.
Daughter 클래스 - 자식 역할을 하는 UserControl입니다.
Fafamama는 LayoutRoot의 Opacity를 조정하는 sbShow란 Storyboard를 UserControl.Resources 하위에 가지고 있으며,
Son은 Fafamama를 쏙 빼 닮아 자신의 LayoutRoot의 Opacity를 조정하는 sbShow란 똑같은 이름의
Storyboard를 가지고 있습니다.
Daughter는 Son이 가지고 있는 스토리보드와 똑같은 스토리보드를 이름만 다르게 하여 가지고 있습니다.
Fafamama.MakeSons() 메서드 - 두 명의 아들을 생성합니다.
Fafamama.MakeDaughters() 메서드 - 두 명의 딸을 생성합니다.
총 6가지 케이스를 실험하기 위해 6번 Fafamama를 생성합니다.
Case 1) Fafamama의 생성자에서 MakeDaughters 호출
Case 2) Fafamama의 Loaded 이벤트에서 MakeDaughters 호출
Case 3) 버튼 클릭에 의해 이미 생성되어 있는 Fafamama의 MakeDaughters 호출
Case 4) Fafamama의 생성자에서 MakeSons 호출
Case 5) Fafamama의 Loaded 이벤트에서 MakeSons 호출
Case 6) 버튼 클릭에 의해 이미 생성되어 있는 Fafamama의 MakeSons 호출
라이브 실험
아래 실버라이트 어플리케이션 안에 실험 Case 6개에 대한 버튼을 준비 하였습니다.
한번 씩 눌러보십시오.
실험결과
부모와 같은 이름의 Storyboard를 가지고 있지 않은 Daughter의 경우, 언제나 예외발생 없이 생성이 된 반면,
UserControl 부모, 자식이 같은 이름의 스토리보드를 가지고 있는 Son의 경우,
생성자에서 호출 시를 제외하고서는 부모의 Panel에 Children.Add 할 수 없었습니다.
이런 경우를 만나신다면 당분간은 피해서(스토리보드 이름을 중복되지 않게 준다거나, 이름을 유지하고, 다른 객체의 Resources 하위로 옮김) 사용해야 하겠습니다.
다운로드
Tag : ArgumentException, Children.Add실패, Silverlight, Storyboard이름중복, 실버라이트
Tag : MediaElement, Silverlight, 개수제한, 실버라이트
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM
"http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-http-request-headers-from domain="* " headers="*" />
</cross-domain-policy>
Tag : clientaccesspolicy.xml, crossdomain.xml, Silverlight, 실버라이트
Tag : FullScreenChanged, IsFullScreen, Silverlight, 실버라이트
Tag : Application.Current.Host.Source, Object, Silverlight, 실버라이트, 퍼가기
Tag : MediaElement, Silverlight2, 개수제한, 실버라이트2
왠만한 문제를 제휴를 통해서 해결한다고 가정했을 때, 5번 항목이 조금 걸리네요.
실버라이트에서 사용하려면 API를 통하지 않고 지도 이미지를 사용할 수 있어야 하는데요.
이 문제가 제휴를 통해서 극복이 가능한지 모르겠습니다.
참조 : http://openapi.naver.com/page.nhn?PageId=faq 중 7.네이버 지도 API FAQ
Naver Open API Reference 문서
Tag : Silverlight, 네이버맵API, 실버라이트
Tag : QuadTree, Silverlight2, 실버라이트2, 쿼드트리
ClientBin, bin 디렉토리 내용물 지우기,
'다시 빌드' 해보기,
VS2008 종료 후 재실행,
컴퓨터 리부팅
위와 같은 민간요법을 주로 애용 했었는데요.
이렇게 해도 안되면 Project를 아예 새로 만들었던 과격프로그래머!!!
웹사이트 속성에서 해결 할 수 있는 것을 공도님한테 배웠습니다.
속성창에서 Start Options 항목의 Debuggers Group에서
Silverlight 체크박스에 체크를 합니다.
(원래 이 항목은 실버라이트 기본프로젝트 만들 당시에 체크가 되어있습니다.
허나 무슨 이유에서인지 쓰다가 이런 문제가 있어서 보면 해제되어 있습니다. -_-;;;
해제되는 단축키라도 있는거야????)
Tag : Break Point Error, Silverlight2, 실버라이트2, 중단점에러
맞아요~ 저도 예전에 삽질했던 기억이 있네요 ㅎㅎ
| 2008/07/10 15:30 | PERMALINK | EDIT | REPLY |아하! 경훈씨도 그런 경험이 있었군요!
| 2008/07/12 08:59 | PERMALINK | EDIT |