public static BlockViewModel FromModel(SequencerViewModel sequencer, Model.Block model) { if (model == null) { throw new ArgumentNullException("model"); } BlockViewModel vm; if (!s_viewModelCache.TryGetValue(model, out vm)) { if (model is Model.ColorBlock) { vm = new ColorBlockViewModel(sequencer, (Model.ColorBlock)model); } else if (model is Model.RampBlock) { vm = new RampBlockViewModel(sequencer, (Model.RampBlock)model); } else if (model is Model.LoopBlock) { vm = new LoopBlockViewModel(sequencer, (Model.LoopBlock)model); } //else if (model is Model.GroupBlock) // vm = new GroupBlockViewModel(sequencer, (Model.GroupBlock)model); else { throw new NotImplementedException("unknown block type: " + model.GetType().Name); } s_viewModelCache[model] = vm; } return(vm); }