it's been a year from question, but if I understood well, you should see an example on the gmap.net github, it's pretty straightforward...
something like this:
var gmarker = new GMapMarker(new PointLatLng);
gmarker.Offset = new System.Windows.Point();
gmarker.Zindex = 55;
gmarker.Shape = new Marker(gmapControl, gmarker);
public class Marker
{
private Popup _popup;
private Label _label;
private GMapMarker _marker;
private GMapControl _gMapControl;
public Marker(GMapControl gMapControl, GMapMarker marker)
{
InitializeComponent();
_marker = marker;
_popup = new Popup();
_label = new Label();
_gMapControl = gMapControl;
_popup.Placement = PlacementMode.Mouse;
{
_label.Background = Brushes.MintCream;
_label.Foreground = Brushes.Black;
_label.BorderBrush = Brushes.Gray;
_label.BorderThickness = new Thickness(1);
_label.Padding = new Thickness(2);
_label.FontSize = 12;
_label.Content = $"{_marker.Position.Lat}, {_marker.Position.Lng}";
}
_popup.Child = _label;
}
protected override void OnMouseLeave(MouseEventArgs e)
{
base.OnMouseLeave(e);
_marker.ZIndex -= 10000;
_popup.IsOpen = false;
var c =Color.FromArgb(230, 149, 149, 149);
var brush = new SolidColorBrush(c);
marker.Fill = brush;
}
protected override void OnMouseEnter(MouseEventArgs e)
{
base.OnMouseEnter(e);
_marker.ZIndex += 10000;
_popup.IsOpen = true;
marker.Fill = Brushes.Red;
}
}