public void SaveDiagram(string filename) { DiagramModel diagramModel = new DiagramModel(); Dictionary <NodeBaseViewModel, DiagramNodeBase> nodeDictionary = new Dictionary <NodeBaseViewModel, DiagramNodeBase>(); foreach (var node in diagramViewModel.Nodes) { DiagramNodeBase diagramNode = diagramViewModel.Definition.ViewModelToModel(node); if (diagramNode == null) { continue; } diagramModel.Nodes.Add(diagramNode); nodeDictionary.Add(node, diagramNode); } foreach (var edge in diagramViewModel.Edges) { diagramModel.Edges.Add(new DiagramConnection() { From = nodeDictionary[edge.From], To = nodeDictionary[edge.To] }); } xmlSettings.SaveModel(diagramModel, filename); }
/// <summary> /// Converts model to view model /// </summary> /// <param name="model"></param> /// <returns></returns> internal NodeBaseViewModel ModelToViewModel(DiagramNodeBase model) { var ctx = nodeBehaviours.FirstOrDefault(b => b.Value.TypeModel == model.GetType()); if (ctx.Value == null) { return(null); } if (ctx.Value.ConvertModelToViewModel == null) { return(null); } return(ctx.Value.ConvertModelToViewModel(model)); }