private void ctxQueryComBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
City selectedCity = ctxQueryComBox.SelectedItem as City;
FeatureLayer layer = Map.Layers["cityFeature"] as FeatureLayer;
if (layer == null || selectedCity ==null)
return;
layer.Where = string.Format("CityId = '{0}'", selectedCity.Id); // query
layer.Visible = true;
layer.Update();
Map.Extent = layer.Geometry.Extent;
cxDatagrid.GraphicsLayer = layer;
}
layer.UpdateComplete += (s,e) => {
Map.Extent = layer.Geometry.Extent;
};
layer.Update();
In order to use the 'Updated' FeatureLayer you need to add a handler for the UpdateComplete Event and than have your code run inside that handler
Something along these lineslayer.UpdateComplete += (s,e) => { Map.Extent = layer.Geometry.Extent; }; layer.Update();
layer.UpdateCompleted += (snd, evt) => { Map.Extent = layer.FullExtent; };
Dim featureLayer As FeatureLayer = New FeatureLayer() With {.ID = "DataLayer"}
featureLayer.UpdateCompleted = Sub(snd, evt) MyMap.ZoomTo(featureLayer.FullExtent)
Dim featureLayer As FeatureLayer = New FeatureLayer() With {.ID = "DataLayer"}
' skip other setup code
AddHandler featureLayer.UpdateCompleted, AddressOf FeatureLayer_UpdateCompleted
' a little later...
Private Sub FeatureLayer_UpdateCompleted(ByVal sender As Object, ByVal e As EventArgs)
Dim myExtent As ESRI.ArcGIS.Client.Geometry.Envelope = CType(sender, FeatureLayer).FullExtent
If myExtent IsNot Nothing Then
MyMap.ZoomTo(myExtent)
End If
End Sub