The issue is specific to the call to webClient.DownloadStringAsync.Block the user interface (UI) thread and get the values synchronously, and the value is updated properly.Also, rewrite the UpdateWeather method to use the async await pattern, and the value is updated properly.For example:private async void UpdateWeather(){if (NoDeveloperKey) return;// Find the new center of the extent of the map in lat, long.client.Geometry.MapPoint centerPoint = _map.Extent.GetCenter();client.Geometry.MapPoint geographicPoint = Transform.WebMercatorToGeographic(centerPoint);// Get a new weather observation.WebClient webClient = new WebClient();//webClient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(webClient_DownloadStringCompleted);string x = await webClient.DownloadStringTaskAsync(new Uri(String.Format("{0}{1},{2}.json", _weatherServiceUrl, geographicPoint.Y, geographicPoint.X)));JavaScriptSerializer serializer = new JavaScriptSerializer();Response response = serializer.Deserialize<Response>(x);this.observation = response.current_observation;this.satelliteImage = response.satellite;}