GraphSharp Vertex Double Click Event

925 Views Asked by At

I'm Using graphSharp in my winforms application However i added Node Double click Event on vertex but the the problem is that how can i get value of clicked vertex.

Code :

    Private Sub VertexControl_MouseDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Input.MouseButtonEventArgs)
                     ' Dim a As String
        'a = GraphCanvas.GetX(Me).ToString
      Msg(a)
    End Sub

    Public Event VertexSelected As VertexSelectedEventHandler

    Public Overridable Sub OnVertexSelected(ByVal vc As VertexControl)
        RaiseEvent VertexSelected(Me, New VertexSelectedEventArgs(vc))
    End Sub
End Class

Public Class TaggedGraphLayout
    Inherits GraphLayout(Of Object, TaggedEdge(Of Object, Object), IBidirectionalGraph(Of Object, TaggedEdge(Of Object, Object)))
End Class

Public Delegate Sub VertexSelectedEventHandler(ByVal sender As Object, ByVal args As VertexSelectedEventArgs)

Public Class VertexSelectedEventArgs
    Inherits System.EventArgs
    Public Property VertexControl() As VertexControl

    Public Sub New(ByVal vc As VertexControl)
        MyBase.New()
        VertexControl = vc
    End Sub
End Class
1

There are 1 best solutions below

2
Wizche On

I did it this way (sorry for C# code)

In my XAML I defined the handler on the stackpanel containing all my node data:

<DataTemplate x:Key="componentTemplate" DataType="{x:Type graph:ComponentVertex}">
  <StackPanel Orientation="Horizontal" Margin="5" MouseDown="UIElement_OnMouseDown">
    <TextBlock x:Name="IdBlock" Text="{Binding Path=ID, Mode=OneWay}" Foreground="White"/>
  </StackPanel>
</DataTemplate>

And the event-handler:

    private void UIElement_OnMouseDown(object sender, MouseButtonEventArgs e)
    {
        // Check for double-click only
        if (e.ClickCount >= 2)
        {
            // The DataContext is my custom vertex
            var vm = (ComponentVertex)((StackPanel)sender).DataContext;
            MessageBox.Show(vm.ID);
            e.Handled = true; // Avoid further graph handling
        }
    }