public void ConfigureConnections() { Console.WriteLine(@"Configuring connections"); var blocks = modelManager.GetBlocks(); var connections = modelManager.GetConnections(); var watchables = from block in blocks from connector in block.BlockModel.Connectors select new ConfigurationItemModel { Connector = connector, Parent = block.BlockModel, //TODO: include first axis label and second axis }; var map = watchables.ToDictionary(item => item.Connector, item => item); foreach (var connection in connections) { var sink = connection.Sink.Connector; var source = connection.Source.Connector; if (sink != null && source != null) { Console.WriteLine("Connecting {0}.{1} with {2}.{3}\nCOE: {4} --> {5}\n#:{6}", map[source].Parent.Name, source.Name, map[sink].Parent.Name, sink.Name, source.Hook, sink.Hook, connection.GetHashCode()); } else { Console.WriteLine("Sink: {0} Sourc: {1}\n#:{2}", sink, source, connection.GetHashCode()); } } Watchable = map.Values.ToObservableCollection(); }