Please try the following sample. I tried to use your same approach of defining the Editor and Binding in code-behind and also add the layers at run-time. For simplicity, I only have ClearSelection, graphics in my sample are selected as soon as the feature layer update is complete. I added MouseLeftButtonDown so you can check which graphic belongs to which layer and whether it is infact, selected. I also added ZoomTo the layer's extent so you can verify visually whether their graphics are being selected/deselected.I could not replicate the issue.XAML-code
<Grid x:Name="LayoutRoot" Background="White">
<esri:Map x:Name="MyMap" Extent="-85.6657120405393,38.3219737638205,-85.5755236547754,38.3873509095678"/>
<Border x:Name="MyBorder" VerticalAlignment="Top" HorizontalAlignment="Center">
<StackPanel Orientation="Horizontal">
<Button x:Name="ClearBtn" Content="Clear" />
<Button x:Name="ZoomTo931" Content="Zoom to Layer931" Click="ZoomTo931_Click"/>
<Button x:Name="ZoomTo10" Content="Zoom to Layer10" Click="ZoomTo10_Click"/>
</StackPanel>
</Border>
</Grid>
Code-behind:
public MainPage()
{
InitializeComponent();
Editor editor = new Editor() { Map = this.MyMap, ContinuousMode = true };
Border border = this.LayoutRoot.FindName("MyBorder") as Border;
if (border != null)
border.DataContext = editor;
Button button = this.LayoutRoot.FindName("ClearBtn") as Button;
if (button != null)
button.SetBinding(Button.CommandProperty, new System.Windows.Data.Binding("ClearSelection"));
FeatureLayer layer = new FeatureLayer()
{
ID = "Layer10",
Url = "http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/Fire/Sheep/MapServer/2"
};
layer.UpdateCompleted += layer_UpdateCompleted;
layer.MouseLeftButtonDown += layer_MouseLeftButtonDown;
this.MyMap.Layers.Add(layer);
layer = new FeatureLayer()
{
ID = "Layer931",
Url = "http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Louisville/LOJIC_LandRecords_Louisville/MapServer/0"
};
layer.UpdateCompleted += layer_UpdateCompleted;
layer.MouseLeftButtonDown += layer_MouseLeftButtonDown;
this.MyMap.Layers.Add(layer);
}
void layer_MouseLeftButtonDown(object sender, GraphicMouseButtonEventArgs e)
{
FeatureLayer layer = sender as FeatureLayer;
MessageBox.Show(string.Format("Layer ID: {0}, Graphic Selected: {1}", layer.ID, e.Graphic.Selected));
e.Handled = true;
}
void layer_UpdateCompleted(object sender, EventArgs e)
{
FeatureLayer layer = sender as FeatureLayer;
foreach (Graphic g in layer.Graphics)
g.Selected = true;
}
private void ZoomTo931_Click(object sender, RoutedEventArgs e)
{
this.MyMap.ZoomTo(new Envelope(-85.6657120405393, 38.3219737638205, -85.5755236547754, 38.3873509095678));
}
private void ZoomTo10_Click(object sender, RoutedEventArgs e)
{
this.MyMap.ZoomTo(new Envelope(-118.407424798307, 33.9943429215228, -117.3355913417, 34.7713100610928));
}