What's new in 2.3
The 2.3 version of the ArcGIS API for WPF is now available. This topic includes an introduction to the updates and enhancements included in 2.3, a complete list of changes, items deprecated at 2.3, and the issues resolved between the 2.2 release and the 2.3 release.
ArcGIS Server 10.0 or later is required to utilize the new functionality included with versions 2.0 and later (that is, including 2.3) 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 later is required for basic functionality included starting with the 1.x release, including basic mapping and query.
Updates and enhancements
The following enhancements are included in 2.3:
- New web map content
- Enhanced KML layer
- Auto-reprojection of graphics layers
- New PointDataSource as a graphics source
- New client-side spatial operations
- New GroupLayer
- New WMTS layer
- New GpsLayer
- Additional changes including an Attribution control, credentials on ArcGISDynamicMapServiceLayer and ArcGIS ImageServiceLayer, FeatureDataGrid and FeatureDataForm enhancements, inclusion of WmsLayers in the Legend control, support for additional SimpleFillSymbol styles, and support for parameters appended to the Url property of the Geoprocessor task.
New web map content
ArcGIS Online can be used to create and share web maps that contain rich, detailed spatial information. The API now includes support for KML, WMS, and CSV by reference layers in a web map. In addition, bar, line, and pie charts configured in a web map as part of the map service item pop-up are now available in a data template for display and interaction on the client.
Enhanced KML layer
The KmlLayer was rebuilt as a GroupLayer (also new in 2.3) to better represent KML content. It includes support for nested folders (layers), setting visibility of layers, placemarks, ground overlays, regions, network links, auto-refresh on network links, and more. Support for display in the Legend control has also been added.

KML is rendered using client logic; no service is required.
Auto-reprojection of graphics layers
GraphicsLayer and any layer that derives from it, such as GeoRssLayer and KmlLayer, can be reprojected on the fly. If the spatial reference of the Map is geographic World Geodetic System 1984 ([WGS84] WKID: 4326) or Web Mercator (WKID: 102100), reprojection will occur automatically on the client. If a graphics layer or map is in another spatial reference, you can use the ProjectionService property to reference a class that implements IProjectionService, such as the GeometryService task.

Graphic feature geometry in the underlying data remains untouched; only the display of graphics is affected.
New PointDataSource as a graphics source
In version 2.2, the GraphicsLayer.GraphicsDataSource property provided a mechanism for binding a graphics layer to a collection of graphics. In version 2.3, the functionality has been enhanced with the addition of the GraphicsDataSource and PointDataSource classes. The GraphicsDataSource abstract class enables binding the GraphicsSource to a collection of items that contain geographic information and converting the items to graphics that can be rendered in a map. The PointDataSource class provides the implementation necessary to easily bind to items with attributes that reference location using X and Y values. This functionality caters to the use of Model View ViewModel (MVVM) design patterns. In general, the view (user interface [UI]) can bind to data (model) via a view-model, implemented in code-behind.
New client-side spatial operations
While ArcGIS Server maintains a geometry service to handle a number of spatial operations, the spatial operations require a request to a remote server. The API now contains a set of spatial operations available on the client. The static methods Density, Length, and Area on the ESRI.ArcGIS.Client.Geometry.Geodesic class calculate solutions on a spherical or curved surface. Input geometry must be in geographic coordinate space (for example, WGS84). Geodesic measurements usually provide the most accurate results. The same methods are available on the ESRI.ArcGIS.Client.Geometry.Euclidean class, but calculations assume a flat surface. Input geometry is usually in a projected coordinate system that references measured units, such as meters.
New GroupLayer
The API now contains a GroupLayer to consolidate any type and number of layers within a map. The legend will also respect and nest layers present within a group.
New WMTS layer
The Open Geospatial Consortium (OGC) provides a specification for tiled map services on the web (WMTS). Tiled map services hosted by ArcGIS Server 10.1 provide a WMTS interface to the map tiles. The API includes a new layer type, WmtsLayer, to support this format.
New GpsLayer
A new layer type for working with location services has been added in the ESRI.ArcGIS.Client.Toolkit.DataSources assembly. The GpsLayer is supported for use with .NET 4.0 on the Windows 7 platform. It uses active location sensors installed and functioning on a Windows 7 system. The layer displays the current location and accuracy on the map.
Additional changes
- Both ArcGISDynamicMapServiceLayer and ArcGISTiledMapServiceLayer include two methods, GetDetail and GetAllDetails, for returning feature layer and table metadata in the respective service.
- The Map control includes a Scale property, and feature layers respect the current map scale to determine when they should be retrieved and displayed (if Mode="OnDemand").
- Layer time options can be set on ArcGISDynamicMapServiceLayers.
- An Attribution control filters copyright details based on visibility of a layer.
- ArcGISDynamicMapServiceLayer and ArcGISImageServiceLayer support using the Credentials property.
- The ability to disable client cache is available for ArcGISImageServiceLayers.
- FeatureDataGrid performance has been enhanced to improve the display and interaction with attribute and map data.
- The FeatureDataGrid and FeatureDataForm support fields with coded value domains and subtypes.
- WmsLayer includes support for display in the Legend control.
- The Legend provides a public setter for LayerItemViewModel.IsMapLayer and LegendItemViewModel.Template properties.
- SimpleFillSymbol added support for the following fill styles: BackwardDiagonal, ForwardDiagonal, Horizontal, and Vertical.
- Geoprocessor task supports parameters appended to the Url property.
Deprecated items
The following classes and members have been deprecated in 2.3 and will be removed in version 3.0 of the API. See the library reference for more details.
Classes
- DictionaryConverter
- ScaleBar
- SelectedToolbarItemArgs
- Toolbar
- ToolbarItem
- ToolbarItemCollection
Members
- ArcGISImageServiceLayer.InitialExtent
- ArcGISImageServiceLayer.MapName
- ArcGISImageServiceLayer.MinPixelSize
- ArcGISImageServiceLayer.MaxPixelSize
- ClassBreakRenderer.Attribute
- CodedValueSource.Name
- FeatureLayer.FeatureSymbol
- FeatureLayer.Color
- FeatureDataGrid.RefreshRow(Graphic graphic)
- FindParameters.SpatialReferenceWKID
- IdentifyParameters.SpatialReferenceWKID
- LinearUnit.ScaleBarUnit
- Magnifier.Initialize(ESRI.ArcGIS.Client.Map map)
- Query.SpatialReferenceWKID
- Toolbar.ToolbarIndexChangedHandler(object sender, SelectedToolbarItemArgs e)
- Toolbar.ToolbarItemMouseEnter(object sender, SelectedToolbarItemArgs e)
- Toolbar.ToolbarItemMouseLeave(object sender, SelectedToolbarItemArgs e)
- UniqueValueMultipleFieldsRenderer.Attributes
- UniqueValueRenderer.Attribute
Complete list of changes
For a complete list of changes in the API between versions 2.2 and 2.3, see the following assembly comparisons:
- ESRI.ArcGIS.Client assembly comparison
- ESRI.ArcGIS.Client.Behaviors assembly (no changes)
- ESRI.ArcGIS.Client.Bing assembly (no changes)
- ESRI.ArcGIS.Client.Toolkit assembly comparison
- ESRI.ArcGIS.Client.Toolkit.DataSources assembly comparison
- ESRI.ArcGIS.Client.WebMap assembly comparison
Resolved issues
The following issues are resolved in the 2.3 API:
- GPDate is not correctly serializing in other cultures.
- Legend does not show FeatureService PictureFillSymbols.
- Legend should handle scale range when a layer’s MaximumResolution is 0.0.
- Legend's LayerItemViewModel does not fire PropertyChanged event when the MaximumResolution, MinimumResolution, or ID of a layer changes.
- Web map: If pop-up title has a description, show only description in title.
- Web map: Fields in pop-up containing URLs should be displayed as hyperlinks.
- EditVertices on a graphic with a symbol that relies on attributes is not rendered correctly.
- SimpleMarkerSymbol.ToJson Style.Triangle should be "esriSMSCircle."
- Editor does not support ProxyUrl for GeometryService.
- EditGeometry Undo stack is not cleared after edit has completed.
- DrawEventArgs.Geometry for DrawMode Circle, Arrow, Triangle, Ellipse have null SpatialReference.
- Editor.Select does not work with FeatureLayer, ProxyUrl, or Token.
- Selecting a feature on a map does not select the row or change the selection count in FeatureDataGrid.
- FeatureDataForm: When the CodedValueDomain value is null, you cannot save changes made.
- When disposing the map, the map is not disposed from memory.
- Unable to select a rectangle when its rotated.
- Cut and Reshape throw ArgumentOutOfRangeException when Editor acts on layers that have no selection.
- The OverviewMap in static mode does not respect the maximum extent.
- FeatureLayer is not clearing the graphics collection when the map extent changes.
- TiledLayer does not support a tile cache with more than 10 million rows or columns.
- MarkerSymbol offset is not updated when using a renderer.
- SimpleLineSymbol with LineStyle.Null type renders with color.
- Busy indicator in Legend always spins at design time for feature layers.
- Graphics are not rendered when panning large distances.
- OverviewMap control throws UnhandledException when OverviewMap.Visibility="Collapsed" and the map is rotated.
- Draw.VertexAdded is not raised for the first point.
- Polygon with a null PointCollection throws error.
- InfoWindow does not display if Anchor is inside normalized extent.
- Changing the size of a symbol on a graphic for a multipoint feature throws a null reference exception.
- ClassBreaksRenderer.ToJson does not include DefaultSymbol.
- In Editor, when Selection mode is rectangle and feature layer mode is selection only, the server returns no features.
- Feature service capabilities are not recognized when the values contain leading or trailing spaces.
- Pop-up shows an integer value for CodedValueDomain, FeatureTypes, and Dynamic CodedValueDomain.
- HeatMapLayer.HeatMapPoints change location when FlowDirection is RightToLeft.
- Updating FeatureServiceSymbols.Fill or Color does not update GraphicElement VisualState (SelectionColor is lost).
- Symbols.ToJson appends invalid # character to __type property value.
- GPResultImageLayer does not pass through Geoprocessor.ProxyUrl.
- OpenStreetMap cycle map does not display in Firefox.
- ArcGISDynamicMapServiceLayer fails to draw when Url.Length is between 2049 and 2083.
- When a custom TiledLayer doesn't fetch a tile, the layer progress is not correctly updated.
- TemplatePicker.Map does not recognize new layer added to the Map.
- TemplatePicker does not reflect update on FeatureLayer.Renderer or FeatureLayer.Renderer.Symbols.
- TemplatePicker does not remove the margin of MarkerSymbols.
- TemplatePicker should respect FeatureTemplate.DrawingTool.
- Editor.EditVertices does not complete when MoveEnabled is false.
- EditGeometry and EditVertices Magnifier shows when dragging Rotate/Scale via touch.
- NullReference exception when setting the SpatialReference if MapService has only tables and no layers.
- Feature layer graphics remain in cache when on demand cache is set to 0 and extent has no features.
- Draw returns duplicate vertices via touch.
- Symbol.FromJson throws unsupported exception when outline is null.
- WebMap.Document class not using correct prioritization for layer content in web map, map service item, service.
- Web map support for definitionExpression in feature layer is missing.
- The recommended DrawingTool for a Template should be exposed on the template property.
- Feature layers may not display properly at very large scales (when zoomed in).
Previous changes
For a complete list of what was updated in the prior version, see What's new in 2.2.