복잡한 모델을 포함하는 ViewModels은 어떻게 서로 관계가 있습니까?MVVM - 작업 영역의 여러 작업 영역이 의미가없는 것처럼 보입니다
NO WPF 제자가 지금까지 그것에 대해 말하지 않았다추측 왜 수 ...
당신은 그게 전부 사실을 생각하십니까은?나를 이해하지 못하겠습니까?
다음을 확인합니다 CustomerViewModel는 OrderViewModel 많은 그 많은 ProductViewModel 있습니다.
당신은 3 작업 영역 모든 3 ViewModels에 대한 새로운 데이터를 입력해야하고 사용자가 입력 => customerVM s, orderVM
들과 productVM`s의 컬렉션을 다중 선택하는 3리스트 박스/combobo/데이터 그리드 있습니다.
새로운 사용자/주문/제품이 추가 될 때마다 작업 공간을 켜거나 끌 필요가없는 사용자에게 UI가 적합하다는 사실은 사용자 경험이 나쁜 것인데,이 전형적인 LOB 애플리케이션 요구 사항을 어떻게 수행합니까?
편집 :
당신은 MVVM 입력 작업 공간의 컬렉션이있다. 모든 ViewModel은 WorkSpace 클래스에서 파생되므로 Workspace가 될 수 있습니다. 작업 영역 컬렉션은 ItemsSource afair josh smith 예제에 바인딩됩니다.
문 : 나는 goold 성숙 창을 사용하려면 사용자 인터페이스없이 폐쇄 viewmodels을 ... 형성 문제하십시오 CustomerviewModel 이미 인스턴스화해야하기 때문에 MVVM은 작업 공간 (폐쇄 나던 문제 ...)로 작업 할 수 있습니다 그런 다음 데이터 유형에 따라 itemsControl 및 datatemplated에 바인딩 된 작업 영역 컬렉션에 추가됩니다.
MVVM의 ViewModel이 모델을 생성자 매개 변수로 사용하기 때문에 내 ViewModel 인스턴스를 보유하고있는 작업 공간이 없으면이를 데이터 형식화 할 수 없습니다. CustomerViewModel의 DataType을 사용하여 UserControl을 DataTemplating하면 XAML에 예외가 발생합니다!
지금 내가 가지고 싶은 내 UI를 보면 : 나는 datatemplated에는 작업 공간 만 3 ViewModels = 3에 추가 된 UserControls 수단에 3 번 빅뱅이 없다 ...
이제 얻을 왜 MVVM을 좋아하지 않아? 그게 잘 생각하고 내가 솔루션을 검색 ...
ObservableCollection에서 내 ViewModels 일명 DataFormulars를 넣을 수 있지만 물론 그들을 ItemsControl에 바인딩 싶지 않아요. 나는이 3 UserControl 내 레이아웃에서 특정 위치를 가지고 싶습니다. ItemsControl을 사용하면 새로운 Dataformular가 방금 추가되고 기존 공간에 맞지 않는 경우 포장 된 바보 큐가 있습니다. 그게 전부 쓰레기 레이아웃 디자인/나쁜 UI입니다.
지금 나 한테 주시겠습니까?
물론 창에는 viewmodel의 데이터 유형으로 데이터 형식화 된 여러 컨트롤이있을 수 있습니다. 그게 내가하는 말이 아니야. Product/Customer/Order가 포함 된 내 마스터 세부 정보 - - ViewModelcollection은 메시지 시스템의 정렬을 사용하여 문제를 해결하지 않고도 올바르게 작동합니다. VM 컬렉션에서 IsSynchronizedTocurrentItem을 사용하고 바인딩하면 모든 것이 올바르게 전환됩니다. 편집에 대한 자세한 내용은 위를 참조하십시오. – msfanboy
너도 알다시피, 나는 부분적으로 틀렸어. 오늘 나는 사치 바버 (Sacha Barber)의 MVV 프레임 워크 인 Chinch를 확인했고 갑자기 눈을 떴다. 그는 CustomerViewModel에서 생성자를 사용하지 않습니다. 나는 이유를 알고있다 ;-) 그는 관련 주문과 제품을 로지 로딩한다. 나는 그것을 항상 AllCustomersViewModel에 바인딩 된 내 콤보 상자에 바인딩합니다. 문제는 관련 데이터를 지연/열망하는 것입니다. 게으른 로딩을 사용하는 경우 올바른 Dan 예를 들어 관련 CustomerViewModel을 DataGrid에 표시하기 위해 Messenger를 통해 선택한 CustomerViewModel을 다른 장소로 실행합니다. – msfanboy
Chinch에서 본 내용을 충고하고 ViewMOdels 생성자 인 hurrraaayy XD를 킥 할 수 있도록로드 전략을 변경 한 것으로 보았 기 때문에 솔루션으로 쓴 첫 번째 단락을 봅니다. – msfanboy