문제

내 WPF MVVM 응용 프로그램에서 내 모델은 런타임에 지속적으로 변경되는 복잡한 모델 객체 트리입니다. 모델 인스턴스는 런타임에 와서 트리 내에서 위치를 변경하며 물론 많은 속성을 변경합니다. 내 견해는 거의 그 나무의 일대일 시각적 표현입니다. 모든 모델 인스턴스는 케이스의 80%에도 트리의 노드입니다.

내 질문은 이제이 주위의 뷰 모델을 어떻게 설계 할 것인가? 내 문제는 각각의 속성이 많은 모델 유형이 많이 있다는 것입니다. MVVM을 이해한다면보기가 모델과 직접 통신해서는 안되므로 각 모델 유형에 대해 뷰 모델 유형을 만들고 뷰 모드에서 모델 유형의 각 속성을 다시 쓸어 야합니다.

또한 ViewModel은 모델의 속성 변경에 "바인딩"하여 뷰로 전달해야합니다 (WPF Datatbinding 사용). 새로 보이는 각 모델에 대한 뷰 모델 인스턴스를 생성하고 소개하는 공장이 필요하며 해당 모델이 사라질 때 각 뷰 모델 인스턴스를 처분해야합니다. 나는 내가 만든 모든 인스턴스를 추적하게됩니다. 이 더블 랩핑에 대한 블로트 코드가 얼마나 많은 일을 생성하는지는 믿을 수 없습니다. 이것이 정말 좋은 접근법입니까? 각 엔티티와 각 속성이 더 적게 덜 존재하며 추가 코드 유지 모델과 동기화가 많습니다. 이것을 어떻게 처리합니까? 이것을 해결하는 더 영리한 방법이 있습니까?

누구든지 내가하는 것보다 더 나은 참조/샘플 구현이 있습니까?

도움이 되었습니까?

해결책

이 길을 따라 가면 패러다임의 함정에 빠질 수 있다고 생각합니다. MVVM은 WPF 세계의 개발을 단순화하는 패턴에 지나지 않습니다. 그렇지 않은 경우 - 사용하지 않거나 접근 방식을 수정하지 마십시오. "MVVM 사용"필드를 확인하기 위해 시간의 80%를 보내지 않을 것입니다.

이제 당신의 질문으로 돌아갑니다. 내가 틀렸다면 나를 교정하지만 반대 방향에서 MVVM을보고있는 것처럼 들린다 : 당신은 필요하지 않습니다. 모델 에게 뷰 모델 일대일 서신. 일반적으로 뷰를 기반으로 뷰 모델을 먼저, 그리고 모델에서 만 뷰 모델을 만듭니다.

일반적으로 그래픽 디자이너의 화면 모형을보고 모델에서 필요한 모든 필드를 가져 와서 랩/수정/형식/결합하여 가능한 한 쉽게 뷰 개발을 할 수있는 해당 뷰 모델을 만듭니다.

당신은 당신의 견해가 모델의 거의 일대일 시각적 표현이라고 말했습니다. 이 경우 모델 트리의 루트 객체를 노출시키는 매우 간단한 뷰 모델을 만들고 해당 속성을 통해 직접 모델을 소비하는 것이 좋습니다. 그런 다음 뷰 사용자 정의 또는 명령 처리가 필요한 경우 ViewModel에이를 위임 할 수 있습니다.

매우 모호한 답변에 대해 죄송합니다. 더 구체적인 질문을한다면 혼란을 없애는 것일 수도 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top