This project includes:
- a force-directed layout algorithm in C#. See Wikipedia page on force-based algorithms
- a Silverlight control (SilverSpringCanvas) that uses the algorithm to layout child elements
- The springy.js javascript library by (@dhotson) provided some inspiration for SilverSpring, particularly the idea of visualizing the graph during the layout calculation.
- The contents of a stackoverflow post helped to work out the required arrow drawing code. See stackoverflow post.
See an example here