Как вы думаете, эта реализация Model-ViewModel верна? Обратите внимание, что Stars (в VM) является ObservableCollection виртуальных машин внутри другого, и я чувствую, что он отделяет виртуальную машину от M, потому что при удалении элемента из Stars мне все равно нужно удалить его вручную.Иерархические проблемы с данными в 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; }
}
}
Почему вы вообще используете ObservableCollection, если вы не хотите использовать OnCollectionChanged? –
Поскольку мне нужен пользовательский интерфейс для обновления, я не хочу использовать его для синхронизации модели и ViewModel. – Natxo