2013-02-18 5 views
0

많은 그래프/차트 "축소판 그림"을 표시해야합니다. 하나를 클릭하면 더 큰 버전의 차트를 표시하는 "확장 된보기"(별도 패널에 있음)와 차트를보고 조작 할 수있는 컨트롤이 표시됩니다.MVVM - 뷰/뷰 모델의 여러 인스턴스를 동적으로 생성합니다.

서로 다른 차트가 여러 개 있는데, 각기 다른 방식으로 데이터를 플로팅합니다. 또한 주어진 차트 유형이 여러 번 나타날 수 있으며 각 차트 유형은 데이터의 다른 하위 집합을 표시합니다. "펼쳐진"뷰의 컨트롤은 한 차트 유형에서 다른 차트 유형까지도 달라 지므로 여기에는 공통점이 거의 없습니다.

MVVM에서 모든 것을 모델링하는 방법에 대해 고민하고 있습니다. 특히 알 수없는 썸네일 수 (경우에 따라 동일 유형의 여러 인스턴스)를 동적으로 생성해야 할 필요가있는 경우를 생각해보십시오.

큰 소리로 생각해 보니 하나의 축소판을 나타내는 view/viewmodel이 필요합니다. 뷰에는 차트 구성 요소가 포함되어 있으며 VM이 데이터를 플롯에 표시합니다. 나는 또한 "축소판 목록"UI를 위해 V/VM이 필요하다고 생각합니다. 축소판을 만들고 목록에 바인딩하기위한 모음을 통해 노출시키는 역할을합니다. 하지만 어떻게 인스턴스화합니까? VM은보기에 주입되어 "축소판 목록"VM이 축소판보기를 동적으로 인스턴스화해야한다고 제안하지만 VM은보기에 대한 지식이 없어야합니다.

마지막으로 "확장 된"보기를 표시하면 차트를 다시 렌더링하지 않아도되도록 축소판에 사용 된 차트 구성 요소 /보기를 전달하는 것이 좋습니다.

관련성이 있고 도움이된다면 Castle Windsor를 종속성 주입과 프리즘의 탐색 기능으로 사용하고 있습니다.

답변

1

이 참으로 복잡한 주제입니다 ...

나는 아이콘 자체 반드시 아이콘의 목록의 VM을 건의 할 것입니다. 이것은 IconListViewModels의 타당성에 묶일 수 있습니다. 그렇다면 ChartViewModelFactory에 대해 생각해야합니다. DIC와 연계하여 작동합니다.

중요한 토론은 VM-V 결혼입니다. 첫 번째보기 또는 먼저 모델보기 ... 한 가지 방법은 ViewResolver 일 수 있으며,보기 모델에 따라 일치하는보기를 반환하는 경우 ... 이는 일종의 규칙에 의존 할 수 있습니다. 그래서 마지막 단계는 ...

+0

에 대해서 나는 이것이 당신이 시작하는 데 도움이되기를 바랍니다 ... 일치하는보기가 함께 접착제 및 콘텐츠 발표자로 결합 찾을 뷰 모델

을 공장을 요청할 수 단일 'IconListViewModels' VM - 런타임에 "데이터 세트"의 수가 달라 지므로 각 엄지의 데이터를 별도의 속성으로 노출 할 수 있는지 확신 할 수 없습니다. 배열을 사용할 수는 있지만 각 엄지보기를 해당 속성의 다른 요소에 바인딩하도록 구성하려면 어떻게해야합니까? 대신 데이터 세트를 뷰의 DataContext에 할당하는'ViewResolver'에 전달할 생각을하고 있습니다. 당신은 나를 올바른 방향으로 지적했고, 생각해 볼 몇 가지 것을 알려주었습니다. 그리고 ContentPresenter에 뷰를 바인딩하는 것을 생각하지 않았습니다. 좋은 팁입니다! –

+0

항상 ... 내 요점은 중첩 된 VM을 낮게 유지하는 것입니다. 복잡한 ViewModel 또는 일부 속성 일 필요가 있는지 생각해보십시오. 그러나 어떤 코드도 볼 수 없으므로 여기서는 심사 위원이 없습니다. 하지만 IconListViewModel에 OberservableCollection 이 있어야합니다. ObservableCollection 일 수도 있습니다. 다행히 도울 수있어. q를 표시하십시오. 도움이된다면 answerd =) – silverfighter

관련 문제