많은 다른 비즈니스 개체로 구성된 비즈니스 개체를 표시하고자하는 시나리오가 있습니다. 즉, 계층 적 구조입니다.ViewModel 생성
데이터를 표시하려면 masterDetail 유형의보기를 사용하고 싶지만 데이터를 더 깊고 깊게 파고 드는 많은 수준이 필요합니다.
그래서 객체의 루트에 일부 목록에서 항목을 선택하고 속성의 상세보기를 표시 할 수 있습니다, 그 상세보기에서 항목을 선택하고
등 등의 상세보기를 보여만약 내가 데이터와 상호 작용하지 않았다면 모델에 바로 바인딩 할 수 있기 때문에 깊은 계층 구조 내의 각 모델에 대한 viewModel을 생성 할 필요가 없습니다.
데이터와 상호 작용하는 경우 뷰 모델을 사용하여 전체 비즈니스 개체와 해당 하위 항목을 래핑하고이를 바인딩하여 특정 논리를 수행하기위한 명령을 추가 할 수 있습니다.
그러나 특정 수준의 데이터와 만 상호 작용하려는 경우 어떻게해야합니까? XAML 또는 codeBehind에서 직접 모델과 상호 작용하려고하면 어수선해질 수 있습니다. 그러나 ViewModels로 모든 것을 마무리하는 것은 많은 작업입니다. 난 그냥 특정 지점
<DisplayControl DataContext="{Binding A}">
<DisplayControl DataContext="{Binding B}">
<InteractionControl DataContext="{Binding C, Converter{ConvertModelToViewModel}}">
</InteractionControl >
</DisplayControl >
</DisplayControl >
하지만 그때 그 Viewmodels에 정리를 수행해야하는 경우에 viewModels을 만들 수 컨버터를 사용하는 것이
임 생각? 이벤트 등록을 취소 할 수 있습니다. 동일한 항목을 앞뒤로 이동할 때마다 동일한 모델에 대한 새로운 뷰 모델이 만들어집니다. 나는 가비지 콜렉션에 의존하고 싶지 않다. 뷰 모델을 유지하는 것이 그들이하는 일에 따라 비용이 많이 들고, GC가 발생하지 않을 수도있다. (예 : 정적 클래스의 이벤트에 등록하는 경우). 약한 이벤트를 사용하면 GC에 도움이되지만 값 비싼 ViewModel을 필요 이상으로 길게 유지하는 경우에는 도움이되지 않습니다.
이것은 나에게 이해가되지 않습니다. – gleng
viewmodels와 관련하여 [이 질문] (http://stackoverflow.com/questions/5421874/basic-concepts-of-mvvm-what-should-a-viewmodel-do)을 참조하십시오. – Dom
이 질문은 실생활 MVVM 응용 프로그램을 구축하려고 시도한 모든 사람과 제공된 링크가 유용한 링크를 많이 포함하고 있지만 이해가됩니다. 특정 질문과 관련하여 도움이되지 않습니다. 유용한 답변을 기꺼이 제공하지 않으려 고 조용히하지 않는 이유는 무엇입니까? – Marc