모두가 뷰 모델로 모델을 래핑하는 것에 대해 이야기합니다. 지금까지 괜찮아.MVVM : ViewModel을 모델로 변환하려면 어떻게해야합니까?
그러나 내 모델을 유지하려면 ViewModel을 모델로 변환하려면 어떻게해야합니까?
ViewModel의 모든 속성을 새 Model 객체로 읽는 것은 매우 번거로운 것처럼 보입니다.
더 좋은 방법이 있습니까?
모두가 뷰 모델로 모델을 래핑하는 것에 대해 이야기합니다. 지금까지 괜찮아.MVVM : ViewModel을 모델로 변환하려면 어떻게해야합니까?
그러나 내 모델을 유지하려면 ViewModel을 모델로 변환하려면 어떻게해야합니까?
ViewModel의 모든 속성을 새 Model 객체로 읽는 것은 매우 번거로운 것처럼 보입니다.
더 좋은 방법이 있습니까?
저는 현재 이전 winforms 앱을 wpf mvvm 응용 프로그램으로 변환하고 있으며 모델의 실제 인스턴스를 가리키는 내 viewmodel에 속성을 제공하고 있습니다.
내 관점에서보기 모델에서 모델의 복제본을 만드는 것이 의미가 없으며 MVVM 커뮤니티가이를 말하는 것은 아닙니다.
엔티티 프레임 워크가 데이터 바인딩을 지원하는 속성을 가지고 있기 때문에 엔티티 프레임 워크 나 다른 데이터베이스 orm을 사용하기 시작하면 특히 이해가되지 않습니다. 또한 데이터베이스를 변경하기 시작하면 모델과 뷰 모델을 업데이트해야합니다.
편집 : 당신은 INotifyCollectionChanged를 지원하지 않는 EF에 맞아,하지만 내가 아는 한, 그것은에서 INotifyPropertyChanged를 지원하지 않습니다, 그리고 그것의 모습에서, 마이크로 소프트는 향후 릴리스에서 INotifyCollectionChanged를 구현하는 생각 .
MVVM에 대해 옳고 그른 방법이 있다고 생각하지 않습니다. 웹의 모든 다른 '권위'가 어떻게 작동해야하는지에 대한 자체 해석이 있다고 생각합니다.
사용자 인터페이스에 대해 ViewModel이 만들어진다는 아이디어입니다. 즉, 하나의 WPF 양식에는 하나의 ViewModel이 있지만 ViewModel에는 실제로 여러 모델 (고객, 주문 등)이 사용될 수 있습니다. 양식이 하나의 모델 만 처리하는 경우 1 대 1 매핑에 가까워 질 것입니다.
내 질문을 읽으셨습니까? – msfanboy
필요할 때만 모델을 뷰 모델로 래핑하십시오. 그렇지 않으면 뷰가 모델의 특성에 직접 바인딩됩니다. 예 : 모델 1 : 직원 목록 (직원은 이름과 부서가 있음) 모델 2 : 부서 목록. 보기 : 직원 및 부서 목록 표시. 사용자가 부서를 선택하면 직원 목록이 필터링됩니다. ViewModel : 현재 선택된 부서 속성과 필터링 된 직원 목록을 제공합니다.
뷰는 뷰리스트 모델에 대해 부서 목록을 직접 모델링하지만 현재 선택된 부서 및 필터링 된 직원 목록을 모델링합니다. Viewmodel은 선택한 부서에 따라 직원 목록을 필터링합니다.
"... 그렇지 않으면 뷰가 모델의 속성에 직접 바인딩됩니다 ...." => MVVM 패턴을 사용하지 않는 것이 좋습니다! – msfanboy
MVVM을 엄격히 따르는 것보다 더 나은 방법을 요청했다고 생각했습니다. 순수 MVVM은 모델과 VM간에 상태를 복사하는 데 많은 코드가 필요하기 때문에 코드 유지 관리에 문제가 발생합니다. 또한 MVVM 애플 리케이션은 데이터가 중복되기 때문에 높은 메모리 소비를 갖습니다. –
내가 지금 한 일을 잘 알지? 실제로 저는 3 개의 통합 뷰 모델과 MVVM을 사용하여 3 차원 마스터 세부 정보를 관리했기 때문에 학습을위한 것이지만 실용적인 목적이 아니라는 것을 깨달았습니다. 많은 오버 헤드와 모든 복제본 속성 및 종종 내 ... 내가 어떻게 mvvm을 따라하려고하면 코드 흐름을 말할 수 있습니다 ... 이름이 있습니다. 이제는 ViewModel을 UserControls datacontext에 바인드했습니다. 3 개의 집계 된 엔티티가 포함되어 있습니다. 뷰 모델이 아닌 많은 시간을 저장하는/뒤로 속성과 목록을 저장합니다 ... – msfanboy
당신이 속성을 복제하지 않으려면, 내가 일반 모델과 Django>=1.4 proxy models 사용하는 것이 좋을 것 : 데이터와
프록시 모델은 쉽게 원래 모델을 상속하고 모델 Meta
, 예를 들어,에 proxy = True
을 추가하여 정의된다
class MyProxyModel(MyModel):
class Meta(MyModel.Meta):
proxy = True
# Add here the desired view model methods...
참고 프록시 모델은 models.py
에 정의 할 필요가 없습니다 - 나는 종종 관리자 사이트에 프록시 모델을 사용하고 admin.py
에서 그들을 정의합니다.
호프가 도움이되었거나 나 같은 다른 후발 친구가이 기능을 사용할 수 있기를 바랍니다.
대답 한 가 복제 ... ... 매우 모호 : 사샤 이발사 WPF (제자)는 도메인 고객 그의 CustomerModel을 복제하고, 그의 빈대 프레임 워크 샘플 응용 프로그램을 확인 - 나는, EF 언급하지 않은 있지만, EF 엔티티는 INotifyCollectionChanged를 지원하지 않습니다. – msfanboy
"... 데이터베이스를 변경하면 모델을 업데이트해야하고 viewmodel ...." 은 모델이 viewmodel에 위임되므로 true가 아닙니다. 샘플 CustomerViewModel.cs는 : 공개 문자열 FIRSTNAME 는 { 는 { _customerObject.FirstName = 값을 설정; } } 는 modelObject는 뷰 모델의 ctor; - 주입 되나 이것은 ViewModels로 집계 모델 하 문제가 발생하지만 그게 다른 이야기. – msfanboy