private void OnSearchRequestCompleted(SearchRequestCompletedEventArgs e)
 {
     if (SearchCompleted != null)
         SearchCompleted(e);
 }
        private void Client_SearchCompleted(object sender, SearchCompletedEventArgs e)
        {
            SearchRequestCompletedEventArgs args = null;

            try
            {
                if (e.Result.ResponseSummary.StatusCode == SearchService.ResponseStatusCode.Success)
                {
                    IDictionary<string, SearchResultBase> searchResults = new Dictionary<string, SearchResultBase>();
                    IList<Location> locations = new List<Location>();
                    MapItemsControl searchResultMapLayer = CreateMapItemsControl();

                    if ((e.Result != null) && (e.Result.ResultSets.Count > 0))
                    {
                        foreach (SearchResultBase result in e.Result.ResultSets[0].Results)
                        {
                            searchResults.Add(result.Id, result);

                            if (result.LocationData.Locations.Count > 0)
                            {
                                Location location = new Location(result.LocationData.Locations[0]);
                                Pushpin pin = CreatePushPin(result.Id, location);
                                ToolTipService.SetToolTip(pin, result.Name);
                                searchResultMapLayer.Items.Add(pin);
                            }
                        }

                        args = new SearchRequestCompletedEventArgs();

                        args.SearchResults = searchResults;
                        args.SearchResultLayer = searchResultMapLayer;
                        args.Locations = locations;
                        args.BindingArea = e.Result.ResultSets[0].SearchRegion.BoundingArea as LocationRect;
                    }
                }
            }
            catch (Exception)
            {

            }

            OnSearchRequestCompleted(args);
        }