도메인 모델 컬렉션 (일반적으로 List 또는 IEnumerable)은 이고 ViewModel에는이 위임되었습니다.WPF/MVVM : 도메인 모델 컬렉션을 ViewModel로 위임
Thats는 내 CustomerViewModel에 List 또는 IEnumerable 유형의 주문 모음이 있음을 의미합니다.
목록의 변경 내용이 바운드 컨트롤에서 인식되지 않습니다. 하지만 ObservableCollection에서는 그렇습니다.
이것은 MVVM 디자인 패턴의 문제입니다.
어떻게 대처합니까?
UPDATE : 나는 그것을 할 방법 샘플 : 나는 당신이 설명하는 방법을 수행하지 않음으로써이 처리
public class SchoolclassViewModel : ViewModelBase
{
private Schoolclass _schoolclass;
private ObservableCollection<PupilViewModel> _pupils = new ObservableCollection<PupilViewModel>();
public SchoolclassViewModel(Schoolclass schoolclass)
{
_schoolclass = schoolclass;
_schoolclass.Pupils = new List<Pupil>();
foreach (var p in schoolclass.Pupils)
Pupils.Add(new PupilViewModel(p));
}
public Schoolclass GetSchoolclass
{
get { return _schoolclass; }
}
public int ID { get; set; }
public string SchoolclassName
{
get { return _schoolclass.SchoolclassName;}
set
{
if(_schoolclass.SchoolclassName != value)
{
_schoolclass.SchoolclassName = value;
this.RaisePropertyChanged("SchoolclassName");
}
}
}
public ObservableCollection<PupilViewModel> Pupils
{
get{ return _pupils;}
set
{
_pupils = value;
this.RaisePropertyChanged("Pupils");
}
}
}
MVVM 디자인 패턴에는 어떤 문제가 있습니까? 목록의 변경 사항은 수집이 관찰 가능한 경우에만 인식됩니다. 이것은 MVVM뿐만 아니라 모든 프로그래밍입니다. –
MVVM 디자인 패턴만으로 모델을 뷰 모델에 위임하기 때문에 일반적인 문제는 아닙니다. 도메인 모델/컬렉션은 데이터 바인딩에서 변경 알림을위한 ObservableCollection을 갖는 ViewModel 요구 사항과 독립적으로 개발되어야합니다. ViewModel (컬렉션이 UI 요구 사항 인 경우 알림)과 모델 (모델이 뷰에 바인딩되어 있지 않기 때문에 변경 알림이 전혀 표시되지 않습니다.) – msfanboy
ObservableCollection을 IEnumerable 이며 기본 유형이 ObservableCollection 인 경우 바인딩이 여전히 예상대로 작동하지만 맞습니까? (나는 이것이 옳다고 생각하지만, 지금은 정말로 기억하지 못한다.) –
ckramer