2009-12-10 9 views
2

사용자가 하나 이상의 캔버스에 수동으로 추가하도록하려는 UserControls ('MyUserControl')이 있습니다. 하나의 UserControl 인스턴스는 둘 이상의 컨테이너의 자식 요소가 될 수 없습니다 (그렇지 않으면 'System.InvalidOperationException : 요소가 이미 다른 요소의 자식입니다.').Silverlight : 둘 이상의 캔버스에 동일한 UserControl 추가

MyUserControls의 새로운 (복제 된) 인스턴스를 만들지 않고이 작업을 수행 할 수 있습니까? 그렇지 않은 경우 MyUserControls의 복제 인스턴스를 동기화 상태로 유지하는 가장 좋은 전략은 무엇입니까?

+0

일부 코드는 도움이됩니다. – AnthonyWJones

답변

4

컨트롤 (컨트롤)의 동일한 인스턴스를 둘 이상의 부모의 자식으로 추가 할 수 없습니다. Usercontrol의 여러 인스턴스를 만들어 각각의 부모에 배치해야합니다.

표시되는 데이터를 동기화 된 상태로 유지해야하는 경우 해당 데이터를 사용자 컨트롤과 별도로 개체에 저장해야합니다.이 개체는 하나의 인스턴스 만 가질 것입니다. 일반적으로이 데이터 개체를 각 사용자 정의 컨트롤의 DataContext 속성에 할당하면 User 컨트롤의 다양한 구성 요소 부분이 데이터 바인딩을 사용하여 데이터를 가져올 수 있습니다.

데이터 개체가 올바르게 INotifyPropertyChanged을 구현하면 하나의 사용자 정의 컨트롤이 데이터를 변경하면 동일한 데이터 개체를 참조하는 다른 모든 사용자 정의 컨트롤에 반영됩니다.

관련 문제