What's new in 2.2
The 2.2 version of the ArcGIS API for WPF is now available. This topic provides information on the changes between 2.2 and the previously released ArcGIS API for WPF version 2.1. This topic includes an introduction to the updates and enhancements included in 2.2, a complete list of changes, and also the issues resolved between the 2.1 release and the 2.2 release.
ArcGIS Server 10.0 is required to utilize the new functionality included with versions 2.0 and newer (that is, including 2.2) of the ArcGIS API for WPF. This includes editing, time-aware layers, closest facility, service areas, geometry service unions, and generalization. ArcGIS Server 9.3 and above is required for basic functionality included with the 1.x release, for example, basic mapping and query.
Updates and enhancements
The following enhancements are included in 2.2:
- Wrap-around support in the map
- Improved ArcGIS Online integration
- New graphic shape types
- Editor enhancements: rotate, scale, and distinguish graphic and vertex moves
- Additional changes, including enhancements for reading FeatureLayers from ArcGIS JSON, addition of a credentials property for layers and tasks, retrieving table information, new controls, and the MapAutomationPeer class becoming public to enable custom navigation and animation solutions.
Wrap-around support in the map
The Map control now supports continuous pan across the dateline when the spatial reference is geographic World Geodetic System 1984 ([WGS84] WKID 4326), or Web Mercator (WKID 102100). To enable, set the WrapAround property on the Map control to true.
<esri:Map WrapAround="True">
Tiled map services, feature layers, and graphics layers are supported. Dynamic map services that support a spatial reference defined as well-known text (WKT) are supported. This includes ArcGIS Server 10 REST services. See the following screen shot:
![]() |

Only one world frame can be in view at a time.
When the WrapAround mode for a Map control is true, map coordinates may be returned using absolute values outside real-world coordinates. Use the Geometry.NormalizeCentralMeridian method to normalize geometry to the correct coordinate space.

All tasks, except GeometryService, automatically normalize input geometry.
Improved ArcGIS Online integration
ArcGIS Online viewers now support the creation of Map Notes with pop-up definitions to store information in a web map. In addition, pop-ups can be configured to reference attribute metadata and additional media for features in feature services and layers within dynamic and tiled map services. The Document class in the ESRI.ArcGIS.Client.WebMap library has been enhanced with additional attached properties to access this information and create a Map control with pre-configured layer functionality (such as generating MapTips for feature layers with pop-ups configured or providing pop-up content in a data template for layers in tiled or dynamic map services).
Web maps hosted on a Mobile Content Server are now also supported. Set the ServerBaseUrl property on the Document class in the ESRI.ArcGIS.Client.WebMap library to a valid endpoint (for example, http://arcgismobile.esri.com/arcgis/mobile/content).
New graphic shape types
With version 2.2, new graphic shape types were added. The new shapes include arrow, triangle, circle, and ellipses. They are available for both Draw and Editor classes and can be used by specifying the applicable DrawMode. See the following screen shot:
![]() |
Editor enhancements: rotate, scale, and distinguish graphic and vertex moves
In addition to the new shape types, the Editor class now supports additional interactive graphic editing, including rotations and scaling. When editing vertices, set the RotateEnabled property on the Editor to true for interactive rotation. For scaling of a graphic, set the ScaleEnabled property to true. When changing scale, it is common to want to maintain the aspect ratio of the graphic. Set another new property added to the Editor, MaintainAspectRatio, to true to maintain the aspect ratio. See the following screen shot:
With 2.2, it is now possible to distinguish between moves to a graphic as a whole and edits to individual vertices when the EditVertices command is active. The new MoveEnabled property on the Editor class specifies if a geometry can be moved, while the EditVerticesEnabled property specifies if the individual vertices can be edited.
In addition, a new EditGeometry class is available for more fine-grained control when editing graphics. For example, to start editing a graphic, enable the EditGeometry class and pass a graphic instance to the StartEditing method. To change the symbology of a vertex, scale box, scale point, or rotate symbol, set the respective property on the EditGeometry class.
Additional changes
A new method, FromJson, is available on the FeatureLayer, Renderer, and Symbol classes to create a native type from ArcGIS JSON. Likewise, a new method, ToJson, is available on Renderers and Symbols to generate ArcGIS JSON from native types.

Not all properties of native types can be converted to ArcGIS JSON.
GraphicsLayer has a new GraphicsSource property to support binding to a collection of graphics.
Table information is available for stand-alone tables hosed in ArcGIS dynamic and tiled map services (ArcGISDynamicMapServiceLayer and ArcGISTiledMapServiceLayer) through the Tables property on the layer.
The new ScaleLine control provides another option for interactively displaying the map scale. See the following screen shot:
![]() |
The new Attribution control provides an automated means for displaying layer attribution.
The MapAutomationPeer class is public to enable custom navigation and animation solutions.
A map control dragged from the toolbox and added to a design surface in Visual Studio or Expression Blend is preconfigured to contain the World Street Map tiled map service from ArcGIS Online.
Localization resources are available for messages and internal user interface (UI) text strings (text that cannot be modified via a control template). The following cultures are supported: Arabic (ar), German (de), Spanish (es), French (fr), Italian (it), Japanese (ja), Brazilian Portuguese (pt-BR), Russian (ru), and Simplified Chinese (zh-CN, zh-Hans).
A new Credentials property is now available on layers and tasks that reference services that utilize an HTTP authentication scheme.
Support for compression of web request and response content has been enabled. This capability was already being leveraged by the Silverlight platform.
Complete list of changes
For a complete list of changes in the API between versions 2.1 and 2.2, see the following assembly comparisons:
Resolved issues
The following issues are resolved in the 2.2 release:
- Panning a rotated map using a touch gesture results in an incorrect pan direction
- When DrawMode equals Polyline, and the first point is added by a tap, mouse move or hold and drag updates the first point
- Magnifier does not honor time extent of map
- Tiled map services display blurry when zooming and remain blurry once the zoom animation ends
- Bookmark: text displays behind the Clear button if the Tab key is pressed twice
- Renderer with SimpleLineSymbols of varying Style (Dash, Solid) is unable to render a feature when its attribute change causes a switch to another style
- Incorrectly setting an AttachmentEditor.FeatureLayer to an ArcGIS Server map service returns Visual Studio exception
- GraphicsLayer.MapTip does not always open when over a feature
- FeatureLayer ObjectIDs property is ignored when OutFields is set to "*"
- Double-click a map with empty layer collection results in exception
- GraphicsLayer memory leak with static graphic members for MapTip
- Map.ZoomTo() followed by Map.PanTo() leads to incorrect tile level calculation that causes application to hang
- Geoprocessor services that require proxy handler never respond even if their ProxyHandler is set
- Map with a single Web Map Service (WMS) layer generates incorrect GetMap url and fails to display
- Layers.GetFullExtent() ignores the spatial reference of the map
- ArcGISTiledMapserviceLayer randomly throws null reference exception
- Accessing a FeatureLayer with a DateTime field is slow
- Portions of features in a FeatureLayer from an ArcGIS Server feature service disappear at low zoom levels
- If editing attributes or geometry of newly added feature and the service response is delayed, double entries for one graphic may be created
- GraphicsLayer.MapTip closes when a graphic from another layer without a MapTip is entered
- EditVertices with graphic as CommandParameter does not complete when Editor.ContinuousMode=True
- AttachmentEditor: Add button does not get enabled when in a child control
- AttachmentEditor: Does not honor ProxyURL in FeatureLayer
- MeasureAction may return incorrect area calculation
- MaximumValue for ClassBreakInfo in ClassBreaksRenderer is not applied correctly when rendering features in a graphics layer
- Appending parameters to URLs for layers and tasks may cause exceptions
- WMS services that support WKID=900913 and not 102100 or 3857 fail to render
- Using red color in UniqueValueRenderer in a FeatureService results in a blank fill
- DoNotLocateOnRestrictedElements property of RouteParameters is always set to false
- After panning, the Map.MouseEventArgs ScreenPoint property returns incorrect coordinates on the MouseClick event for the Map class
- Null reference exception when Summary is null in GeoRSS feed
- SpatialReference not set on GeoRssLayer and KmlLayer
- Web map: Provide information on which layers are basemap layers
- Web map: Provide layer information that did not get set as layer properties
- Clusterer doesn't clear the clusters on the map after invoking the layer's ClearGraphics() method
- The initial map extent in the MagnifyingGlass control never gets set, if its ZoomFactor equals 1
- Cluster graphic in a time-aware layer does not get updated when map's TimeExtent is changed
- Cluster graphic when query result returns empty is not updated
- 'InitializationFailure' message in 'InitializationFailed' event of ArcGISDynamicMapServiceLayer object is empty
- Changing Layer.Visible property before Zoom animation is complete causes application to hang
- Toolkit.Navigation zoom slider value is not updated when the Map is set after a template is applied
- Toolkit.Navigation rotated left, rotates the map in opposite direction
- FeatureService SimpleLineSymbol with Dot LineStyle (esriSLSDot) does not show the symbol
- GraphicsLayer MapTip does not close when there is a MapTipHideTimer, and the mouse cursor entered and left the MapTip
- When drawing a polyline, if the first point is added by a Tap, MouseMove updates the first point
- EditorWidget/TemplatePicker templates do not show when layer is removed and added again
- GraphicsLayer MouseEvents (Enter, ButtonDown/Up, Move) do not fire when FlareClusterer symbol is used
- WMSLayer fails to support Norwegian culture for a WMS service lower than version 1.3
- FeatureDataForm uneditable when changing the Combobox (coded domain values) field, if the same field is used for unique value rendering
- Visual Studio 2010: Dragging some Toolkit control onto the design surface returns a Component Object Model (COM) error
- Map.PropertyChanged Event is not raised for some Map properties
- ArcGISTiledMapServiceLayers added to the Map layer collection when the spatial reference does not match, and Map.Extent is set in the code-behind
- ArcGISTiledMapServiceLayer.MapName is missing
- EditVertices, when active, disables panning the map with a single-touch
- Edit Vertices should call Simplify when the edit is completed
- MapService URL with a parameter throws a serialization exception
- Changes to Graphic.MapTip and Graphic.Attributes never cause the Graphic.PropertyChanged Event to fire
- When measure action is active and the target changes, exception is thrown
- FeatureLayer doesn't fire PropertyChanged event when the Renderer changes
- Measure Actions throws error, if first two points are the same
- FeatureSet.ToJson throws an unsupported exception on null geometry
- Magnifier widget fails to display a Dynamic service layer after multiple uses in one session
- ArcGISTiledMapserviceLayer randomly throws a null-reference exception
- OverviewMap AOI box does not properly reflect the viewing area when the basemap rotates
- Null reference exception is thrown when the layer with MapTipHideDelay is removed from the Map control
- FeatureDataGrid does not apply the appropriate attribute type for the features added after the first item in a GraphicsLayer
- FeatureDataGrid does not create attributes in a GraphicsLayer if they are not part of the first graphic in the layer
- Remove Selected Rows option in FeatureDataGrid is not enabled for GraphicsLayer
- Sequence of items in FeatureDataGrid is out of sync after sorting data by a column
- ConstrainExtent is not respected when ZoomDuration is 0
- EditVertices support for a Graphic with an Envelope geometry
- Removing vertex programmatically is not reflected when the EditVertices command is active
- Map.ExtentChanging ExtentEventArgs OldExtent Property is periodically incorrect
- LayerCollection doesn't work with Map.TimeExtent
- Legend control should not display tiled layers having a different projection as the first tiled layer
- OverviewMap area of interest disappears or is not updated
- Refreshed event is not fired for layers that do not implement ILegendSupport
- Layers should fire PropertyChanged event on property InitializationFailure when the initialization failed
- Legend control's LayerItemViewModel.LayerType always null unless it's a Group layer
- FeatureDataGrid should use nullable data types when associated with a GraphicsLayer
- Map does not rotate around its center when FlowDirection is RightToLeft
- Bookmark control does not correctly display some letters with a tail
- GeometryType esriGeometryEnvelope throws an exception while retrieving a FeatureSet from a JSON string
- Cancel on BeginSaveEdits does not cancel save
- FeatureDataForm and FeatureDataGrid layout does not update when layer OutFields is updated
- NullReference exception on FeatureLayer.Update() when layer is not yet initialized
- FeatureLayer with Mode=OnDemand Visible=False does not retrieve data from the service when Visible is changed to True at runtime
- Editing returns cursor animation error
- Client side cache feature on the Map control does not reuse map tiles efficiently
- Large synchronous requests in .NET 3.5 cause applications to hang
- Legend control does not display special characters correctly
- Dynamic layers in the map are not updated when the image exists in the cache
Previous changes
For a complete list of what was updated in the prior version, see What's new in 2.1.