2010-05-28 2 views
2

다음을 구현하려고합니다. 아이템 클래스가있는 아이템 매니저가 있습니다. Item 클래스는 BitmapImage (비트 맵)와 UserControl (벡터)의 두 가지 가능한 시각적 표현을 저장할 수 있습니다.다른 장소에서 동일한 벡터 컨트롤 공유

나중에 게임에서 가능한 모든 장소간에 동일한 이미지 또는 벡터 컨트롤을 공유해야합니다. 예를 들어,지도에서 10 개의 나무를 고려하면 모두 동일한 벡터 컨트롤을 가리 킵니다. 또는 어떤 경우에는 비트 맵 이미지 소스가 될 수 있습니다.

그래서 문제는 BitmapImage 소스를 여러 UIElements가 응용 프로그램에서 쉽게 공유 할 수 있다는 것입니다. 그러나 벡터 컨트롤을 공유하려고하면 실패하고 Child Element는 이미 다른 컨트롤의 Child 요소라고합니다. 나는 이것을 최선의 방법으로 조직하는 방법을 알고 싶다. 예를 들어 UserControl을 다른 유형의 컨트롤 또는 저장소로 바꾸려면 내부에서 스토리 보드 애니메이션을 지원해야합니다.

코드는 다음과 같습니다

if (bi.item.BitmapSource != null) 
    { 
     Image previewImage = new Image(); 
     previewImage.Source = bi.item.BitmapSource; 
     itemPane.ItemPreviewCanvas.Children.Add(previewImage); 
    } else 
    if (bi.item.VectorSource != null) 
    { 
     UserControl previewControl = bi.item.VectorSource; 
     itemPane.ItemPreviewCanvas.Children.Add(previewControl); 
    } 

을하거나 다른 장소에서 동일한 제어를 공유 할 수 없습니다, 다음 복사 또는 벡터 데이터를 저장하는 가장 좋은 방법을 할 수있는 가장 좋은 방법은 무엇인가. 사전에

덕분에

답변

1

그래서, 나는 문제를 발견했다. 다른 컨트롤에 동일한 UserControl을 연결할 수 있습니다.

그러나 업데이트 할 때 컨트롤을 삭제할 때 새 포인터로 다시 채우는 경우가 있습니다. 삭제 전과 같았을 때도 그대로 메모리에 남아 있습니다. 그리고 그것은 같은 부모에게 연결된 2 명의 동일한 사용자 컨트롤과 같았습니다.

새로운 벡터 UserControl로 업데이트하기 전에 컨트롤의 모든 하위를 정리하는 코드 줄을 추가했으며 이제는 매력처럼 작동합니다.

관련 문제