이 Model-ViewModel 구현이 올바른 것으로 생각하십니까? Stars (VM에서)는 ObservableCollection of VM 중 다른 ObservableCollection이며, Stars에서 요소를 제거 할 때 모델을 수동으로 삭제해야하기 때문에 VM을 M에서 분리하는 것처럼 느낍니다.MVVM의 계층 적 데이터 문제
OnCollectionChanged를 사용하지 않고이를 개선하는 방법에 대한 아이디어가 있으십니까? 미리 감사드립니다.
모델 :
public class Galaxy
{
public Galaxy(string name, IList<Star> stars)
{
Name = name;
Stars = stars;
}
public string Name { get; set; }
public IList<Star> Stars { get; set; }
}
public class Star
{
public Star(string name)
{
Name = name;
}
public string Name { get; set; }
}
ViewModels :
public class GalaxyVM : ViewModelBase
{
private Galaxy _galaxy;
private ObservableCollection<StarVM> _stars;
public GalaxyVM(Galaxy galaxy)
{
_galaxy = galaxy;
_stars = new ObservableCollection<StarVM>(from sys in _galaxy.Stars
select new StarVM(sys));
}
public string Name
{
get { return _galaxy.Name; }
}
public ObservableCollection<StarVM> Stars
{
get { return _stars; }
}
}
public class StarVM : ViewModelBase
{
private Star _star;
public StarVM(Star star)
{
_star = star;
}
public string Name
{
get { return _star.Name; }
}
}
OnCollectionChanged를 구현하지 않으려면 왜 ObservableCollection을 사용하고 있습니까? –
업데이트 할 UI가 필요하기 때문에 Model과 ViewModel을 동기화하는 데 사용하고 싶지 않습니다. – Natxo