I now have the following:
private void FlipNode(object sender, RoutedEventArgs e)
{
Node node = this.myDiagram.SelectedNode;
FrameworkElement container = node.FindNamedDescendant("Container") as FrameworkElement;
if (container.RenderTransform is ScaleTransform)
{
container.RenderTransform = null;
}
else
{
container.RenderTransformOrigin = new Point(0.5, 0.5);
container.RenderTransform = new ScaleTransform(-1, 1);
}
foreach (FrameworkElement port in node.Ports)
FlipPort(port);
foreach (Link link in node.LinksConnected)
link.Route.RecomputePoints();
}
private void FlipPort(FrameworkElement port)
{
Spot spot = SpotPanel.GetSpot(port);
spot = new Spot((1 - spot.X), spot.Y);
SpotPanel.SetSpot(port, spot);
Spot linkSpot = Node.GetFromSpot(port);
if (linkSpot == Spot.MiddleLeft)
linkSpot = Spot.MiddleRight;
else if (linkSpot == Spot.MiddleRight)
linkSpot = Spot.MiddleLeft;
Node.SetFromSpot(port, linkSpot);
Node.SetToSpot(port, linkSpot);
if (port.Name.Contains("L") || port.Name.Contains("R"))
SpotPanel.SetAlignment(port, linkSpot);
}
And this is what I am seeing…
Initial:
Link Drawn:
Flipped:
Deselected & reselected: