/* ****** Identify using Query Service ****** */

        private void QueryIdentifyTask_ExecuteCompleted(object sender, QueryEventArgs args)
        {
            QueryItem queryItem = args.UserState as QueryItem;

            if (queryItem.Index == 0)
            {
                IdentifyComboBox.Items.Clear();
                _layersIdentified.Clear();
                IdentifyDetailsDataGrid.ItemsSource = null;
            }

            // display search results for this layers query.
            if (args.FeatureSet.Features.Count > 0)
            {
                foreach (Graphic feature in args.FeatureSet.Features)
                {
                    string title = queryItem.IdentifyLayerName;

                    feature.Attributes.Remove("Shape");
                    feature.Attributes.Remove("OBJECTID");
                    _dataItems.Add(new DataItem()
                    {
                        Title = title,
                        Data  = feature.Attributes
                    });
                    IdentifyComboBox.Items.Add(title);

                    if (_activeIdentifyLayer == title)
                    {
                        queryItem.ActiveLayer = _layersIdentified.Count;
                    }
                    _layersIdentified.Add(title);
                }
            }

            if (queryItem.Next()) // this increments the internal index
            {
                Query query = new ESRI.ArcGIS.Client.Tasks.Query();
                query.SpatialRelationship = SpatialRelationship.esriSpatialRelIntersects;
                query.Geometry            = queryItem.BufferedPoint;
                query.OutFields.AddRange(new string[] { "*" });

                QueryTask queryTask = new QueryTask(queryItem.IdentifyLayerUrl);
                queryTask.ExecuteCompleted += QueryIdentifyTask_ExecuteCompleted;
                queryTask.Failed           += QueryIdentifyTask_Failed;

                queryTask.ExecuteAsync(query, queryItem);
            }
            else // We are done with all our queries, display the result.
            {
                IdentifyComboBox.SelectedIndex = queryItem.ActiveLayer;
                Visibility = System.Windows.Visibility.Visible;

                if ((_dataItems == null) || (_dataItems.Count == 0))
                {
                    NoResult.Visibility = Visibility.Visible;
                    Results.Visibility  = Visibility.Collapsed;
                }
                else
                {
                    NoResult.Visibility = Visibility.Collapsed;
                    Results.Visibility  = Visibility.Visible;
                }
            }
        }