Mvvm Light Devotees는 다음 상황을 어떻게 처리합니까? "자식"ViewModel의 인스턴스를 사용하는 여러 "Master"ViewModel이 있습니다. 즉Mvvm Light ViewModel with ViewModel
하위보기 - 주문의 광고 항목 목록에 대한 하위 모델 ViewModel - "OrderLineItemListViewModel".
상위 ViewModel - 주문의 뷰 모델 "OrderDetailViewModel". 상위 VIewModel - 주문을 청구하기위한 뷰 모델 "OrderChargeViewModel".
상위 ViewModel에는 모두 OrderLineItems 목록이 있어야하며 둘 다 동시에 열 수 있습니다. 현재 부모 ViewModel에 하위 ViewModel 유형의 속성이 포함되어 있으며이를 참조 할 수 있도록 설정했습니다.
public class ChildViewModel
{
public ChildViewModel()
{
Items = new ObservableCollection<ListItemViewModel>
{
new ListItemViewModel("One"),
new ListItemViewMOdel("Two")
}
}
public ObservableCollection<ListItemViewModel> Items {get; private set;}
}
public class ParentViewModel
{
public ParentViewModel()
{
ChildViewModel = new ChildViewModel();
}
public ChildViewModel ChildViewModel {get; set;}
}
<Window>
<DataGrid ItemsSource={Binding ChildViewModel.Items} />
</Window>
지금, 나는 그러나 내가 그렇게 할 수있는 청소 방법을 알아 내지 못했다는 ViewModelLocator 및 메시징과 함께 할 수있는 방법이 있어야한다 생각합니다. 나는 ViewModel의 non-singleton 인스턴스를 생성하기 위해 ViewModelLocator를 사용하는 방법을 알고있다. 그러나, 내가 알아낼 수없는 것은 자식 ViewModel 메시지에 부모 ViewModel이 응답하도록하는 방법이며, 메시지가 "자식"ViewModel에서 온 것이므로 반드시 조치를 취해야합니다.
누구든지이 문제를 해결하는 방법에 대해 조언을 구하거나, 제가 지금까지 그대로 계속해야합니까? 생각하고있는 가장 큰 부분은 당장입니다. ViewModelLocator를 선택적으로 사용하고 궁극적으로 직관적인지 확실하지 않습니다.
제목에서 말한 것처럼 Mvvm Light를 사용하고 있습니다. 귀하의 의견을 보내 주셔서 감사 드리며, 같은 상황을 처리하고 있다고 생각하지 않습니다. 나는 메시징을 사용하는 것을 피하려고하지 않고있다. 나는 그것을 사용하려고 노력하고있다. ViewModelLocator를 사용하여 상위 뷰와 하위 뷰 모델을 모두 생성하는 방법을 알아야합니다 (현재는 부모 만 생성 한 다음 상위 뷰는 수동으로 하위 뷰를 만듭니다). 부모가 아이의 메시지가 * 자식 (또는 그 반대로) 그렇게 행동 할 수 있습니다. –
메신저를 왜 사용 하시겠습니까? 그것은 정확히 무엇을 성취합니까? 나는 메신저를 가능한 한 적게 사용하는 것이 낫다는 것을 발견했으며, 종종 더 나은 해결책이 있습니다. 프레임 워크 질문에 대해 유감스럽게 읽지 않았습니다. –
저는 관리자를 사용하여 내 뷰 모델을 서로 완벽하게 분리 할 수 있으며 뷰 모델 검색 기능을보다 완벽하게 활용할 수 있습니다. –