我不太理解如何基于以下模型构建视图模型
(我简化了模型以便更清晰地阐述)
public class Hit
{
public bool On { get; set;}
public Track Track { get; set; }
}
public class Track
{
public ObservableCollection<Hit> Hits { get; set; }
public LinearGradientBrush Color { get; set; }
public Pattern Pattern { get; set; }
}
public class Pattern
{
public string Name { get; set; }
public ObservableCollection<Tracks> Tracks { get; set; }
}
现在,我的问题是如何构建ViewModels。我需要通过模型保留原始关系,因为我有一个将其序列化为XML文件的Serialize()方法(包括相关的Tracks和Hits)。
为了能够将Pattern绑定到用户控件及其嵌套模板,我还应该有一个PatternViewModel,其中包含一个ObservableCollection<TrackViewModel>,对于TrackViewModel和HitViewModel也是同样的情况,并且我需要在视图模型上有自定义的呈现属性,这些属性不是业务对象的一部分(颜色等)。
但是在视图模型上复制所有模型关系并且还要同时跟踪所有这些关系在编写视图模型时也更容易出错。是否有更好的方法/解决方案?