Skip to content

roberthusak/AvaloniaGraphControl

 
 

Repository files navigation

AvaloniaGraphControl

A graph layout panel for AvaloniaUI

Usage

Each individual graph is displayed through the GraphPanel control included in the assembly

<Window xmlns:agc="clr-namespace:AvaloniaGraphControl;assembly=AvaloniaGraphControl">
    <agc:GraphPanel Graph="{Binding MyGraph}" Zoom="1.2" LayoutMethod="SugiyamaScheme" />
</Window>

The layout is internally implemented with MSAGL (Microsoft Automatic Graph Layout).

The following layout methods are available in MSAGL and can be set in the GraphPanel control independently of the graph model:

The GraphPanel control and the MSAGL assemblies are bundled in a nuget package. The existing MSAGL nuget packages are dedicated to the .NET Framework and do not include any netstandard assembly.

Example of graph definition

public static Graph MyGraph
{
  get
  {
    var graph = new Graph();
    graph.Edges.Add(new Edge("A", "B"));
    graph.Edges.Add(new Edge("A", "D"));
    graph.Edges.Add(new Edge("A", "E"));
    graph.Edges.Add(new Edge("B", "C"));
    graph.Edges.Add(new Edge("B", "D"));
    graph.Edges.Add(new Edge("D", "A"));
    graph.Edges.Add(new Edge("D", "E"));
    return graph;
  }
}

Outcome of graph example

Some graphs from the sample application

Family Tree

State Machine

About

A graph layout panel for AvaloniaUI

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C# 99.8%
  • Shell 0.2%