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);
        }
示例#2
0
        /// <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));
        }