public void LoadDiagram(string filename)
        {
            DiagramModel model = xmlSettings.ModelFromSettings(filename);

            diagramViewModel.ClearDiagram();

            using (var bm = new DiagramBatchMode(diagramViewModel))
            {
                Dictionary <DiagramNodeBase, NodeBaseViewModel> nodeDictionary = new Dictionary <DiagramNodeBase, NodeBaseViewModel>();
                foreach (var node in model.Nodes)
                {
                    NodeBaseViewModel nodeViewModel = diagramViewModel.Definition.ModelToViewModel(node);
                    if (nodeViewModel == null)
                    {
                        continue;
                    }

                    diagramViewModel.AddNode(nodeViewModel, node.Location);

                    nodeDictionary.Add(node, nodeViewModel);
                }
                // Force rendering so we can have sizes of all nodes
                //  diagramViewModel.ForceRedraw();

                foreach (var edge in model.Edges)
                {
                    diagramViewModel.AddConnection(nodeDictionary[edge.From], nodeDictionary[edge.To]);
                }
                // Render again so we can have sizes of attach descriptors
                diagramViewModel.ForceRedraw();

                Console.WriteLine("Model loaded");

                // dont need to call RaiseInitialize, it was allready called in AddNode
                //foreach (var node in diagramViewModel.Nodes)
                //     node.RaiseInitialize();

                foreach (var node in diagramViewModel.AttachDescriptors)
                {
                    node.RaiseInitialize();
                }

                diagramViewModel.ForceRedraw();
            }

            foreach (var conn in diagramViewModel.Edges)
            {
                conn.UpdateConnection();
            }
        }