private void UpdateEdges(GraphNode nodeOfInterest = null) { // Clear edges. _edges.ForAll(edge => { xRoot.Children.Remove(edge); }); _edges.Clear(); // For each node already in this inspector. foreach (var graphNode in this._nodes) { RandomVariable variable = (RandomVariable)graphNode.Tag; // Check if this node connects to another node already in the graph. foreach (var parentVariable in variable.Parents.Select(p => _network.GetVariable(p))) { var parentNode = parentVariable.UserData as GraphNode; Debug.Assert(parentNode != null); // Create edge. GraphEdge edge = new GraphEdge(); xRoot.Children.Add(edge); _edges.Add(edge); edge.From = parentNode; edge.To = graphNode; edge.SetValue(Canvas.ZIndexProperty, LayerUnimportantEdges); } } }