Here is simple sample how to get started with ContextMenu.Xaml:
<esri:Map x:Name="_map" UseAcceleratedDisplay="True">
<esri:Map.ContextMenu>
<ContextMenu x:Name="_contextMenu"
Closed="_contextMenu_Closed">
<ContextMenu.ItemsSource>
<CompositeCollection>
<MenuItem Header="Some general fuctionality" Click="MenuItem_Click_1" />
<MenuItem Header="Show geometry (if had graphic)" Click="MenuItem_Click" IsEnabled="False"/>
</CompositeCollection>
</ContextMenu.ItemsSource>
</ContextMenu>
</esri:Map.ContextMenu>
<esri:ArcGISLocalDynamicMapServiceLayer ID="USA" Path="C:\Program Files (x86)\ArcGIS SDKs\WPF10.2.2\sdk\samples\data\MPKs\USCitiesStates.mpk"/>
<esri:GraphicsLayer ID="Example Graphic" MouseRightButtonUp="GraphicsLayer_MouseRightButtonUp">
<esri:Graphic x:Name="testGraphic">
<esri:Graphic.Symbol>
<esri:SimpleMarkerSymbol Style="Circle" Color="Red"/>
</esri:Graphic.Symbol>
<esri:Graphic.Geometry>
<esri:MapPoint X="0" Y="0" >
<esri:MapPoint.SpatialReference>
<esri:SpatialReference WKID="102100"/>
</esri:MapPoint.SpatialReference>
</esri:MapPoint>
</esri:Graphic.Geometry>
</esri:Graphic>
</esri:GraphicsLayer>
</esri:Map>
Code behind:
using System.Windows;
using ESRI.ArcGIS.Client;
using System.Windows.Controls;
using System.Linq;
namespace ArcGISWpfApplication1
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
Graphic _graphic;
private void GraphicsLayer_MouseRightButtonUp(object sender, GraphicMouseButtonEventArgs e)
{
(_contextMenu.Items[1] as MenuItem).IsEnabled = e.Graphic != null ? true : false;
if (e.Graphic == null)
{
return;
}
var layer = _map.Layers.OfType<GraphicsLayer>().First();
_graphic = e.Graphic;
}
private void MenuItem_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show(_graphic.Geometry.ToJson());
_graphic = null;
(_contextMenu.Items[1] as MenuItem).IsEnabled = false;
}
private void MenuItem_Click_1(object sender, RoutedEventArgs e)
{
MessageBox.Show("Note that points in USA are not graphics, they are rendered in image on dynamic layer. There is red dot on 0,0 - click that");
}
private void _contextMenu_Closed(object sender, RoutedEventArgs e)
{
_graphic = null;
(_contextMenu.Items[1] as MenuItem).IsEnabled = false;
}
}
}