var layerItemViewModel= ((sender as StackPanel).DataContext as ESRI.ArcGIS.Client.Toolkit.Primitives.LayerItemViewModel);
public static class LegendExtension { public static IEnumerable<LegendItemViewModel> SelectedItems(this Client.Toolkit.Legend legend) { if (legend == null) return null; return legend.LayerItems.Descendants().Where(item => item.IsSelected); } private static IEnumerable<LegendItemViewModel> Descendants(this IEnumerable<LayerItemViewModel> layerItems) { if (layerItems == null) yield break; foreach (var layerItem in layerItems) { yield return layerItem; // return legend items if (layerItem.LegendItems != null) { foreach (var item in layerItem.LegendItems) yield return item; } // return recursively layer items if (layerItem.LayerItems != null) { foreach (var item in layerItem.LayerItems.Descendants()) yield return item; } } } }Then you can get the Selected items by 'MyLegend.SelectedItems()'.
I see that there is either zero or one selected item in the tree at any given time.