【发布时间】:2010-01-26 18:32:08
【问题描述】:
您认为这个 Model-ViewModel 实现是否正确? 请注意,Stars(在 VM 中)是另一个 VM 中的 ObservableCollection,我觉得它将 VM 与 M 分离,因为从 Stars 中删除元素时,我仍然需要手动删除它的模型。
关于如何在不使用 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; }
}
视图模型:
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。
标签: c# wpf mvvm observablecollection