You can use UniqueValueRenderer and add an Attribute that will detect which symbol it needs to pick up. Instead of setting graphic.Symbol, you can set graphic.Attribute. Here's an example of how UniqueValueRenderer is used in GraphicsLayer. http://help.arcgis.com/en/webapi/silverlight/samples/start.htm#RenderersXAML. By moving your symbols to a renderer, Legend control should be able to use the symbol and label assigned on the renderer.
private void Legend_Refreshed(object sender, ESRI.ArcGIS.Client.Toolkit.Legend.RefreshedEventArgs e) { GraphicsLayer layer = e.LayerItem.Layer as GraphicsLayer; if (layer != null && layer.ID == "MyGraphics") { // Create a dummy renderer with the label and symbols to see in the legend var renderer = new UniqueValueRenderer(); renderer.Infos.Add(new UniqueValueInfo { Label = "RedMarker", Symbol = LayoutRoot.Resources["RedMarkerSymbol"] as Symbol }); renderer.Infos.Add(new UniqueValueInfo { Label = "GlobePictureMarker", Symbol = LayoutRoot.Resources["GlobePictureMarkerSymbol"] as Symbol }); renderer.Infos.Add(new UniqueValueInfo { Label = "Red Line", Symbol = LayoutRoot.Resources["RedLineSymbol"] as Symbol }); renderer.Infos.Add(new UniqueValueInfo { Label = "Carto Line", Symbol = LayoutRoot.Resources["CartoLineSymbol"] as Symbol }); // ....... add others symbols // Query asynchronously the legend infos for this renderer renderer.QueryLegendInfos(layerLegendInfo => CreateLegendItems(e.LayerItem, layerLegendInfo), null); } } private static void CreateLegendItems(LayerItemViewModel layerItem, LayerLegendInfo layerLegendInfo) { // Project the legend item infos coming from the renderer (LegendItemInfo) to legend items of the legend control (LegendItemViewModel) var items = layerLegendInfo.LegendItemInfos.Select(legendItemInfo => new LegendItemViewModel { Label = legendItemInfo.Label, ImageSource = legendItemInfo.ImageSource }); layerItem.LegendItems = new ObservableCollection<LegendItemViewModel>(items); }
You can set GraphicsLayer.Renderer and Legend control will pick up the symbol.For example: <!--Under Resources--> <esri:SimpleRenderer x:Key="MyRenderer" Label="Red Symbol"> <esri:SimpleRenderer.Symbol> <esri:SimpleMarkerSymbol Color="Red" Size="6" Style="Diamond" /> </esri:SimpleRenderer.Symbol> </esri:SimpleRenderer> <!--more code goes here--> <esri:GraphicsLayer ID="CitiesGraphicsLayer" Renderer="{StaticResource MyRenderer}"/>
<!--Under Resources--> <esri:SimpleRenderer x:Key="MyRenderer" Label="Red Symbol"> <esri:SimpleRenderer.Symbol> <esri:SimpleMarkerSymbol Color="Red" Size="6" Style="Diamond" /> </esri:SimpleRenderer.Symbol> </esri:SimpleRenderer> <!--more code goes here--> <esri:GraphicsLayer ID="CitiesGraphicsLayer" Renderer="{StaticResource MyRenderer}"/>
Les membres connectés peuvent publier, suivre les mises à jour, et plus encore. Nouveau ici ? Inscrivez-vous gratuitement.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.