I'm looking for an advanced graph visualisation library for C# with the following features:
- Adding nodes and edges programmatically & dynamically (i.e. I shouldn't have to construct the graph from CSV, or JSON every time I add a node and an edge)
- Being able to interact with the graph, that is, to click (single, double and/or right) on the nodes and edges, to hover (so that I can show a tooltip), to select single or multiple nodes and/or edges.
- Custom styling for nodes and edges, such as border width & colour, shape, colour (of the object), label, label formatting (bold, italic etc.)
- Automatic layout