<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Extending Legend Control (Re: first part) in ArcGIS API for Silverlight Questions</title>
    <link>https://community.esri.com/t5/arcgis-api-for-silverlight-questions/extending-legend-control/m-p/447890#M11602</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BLOCKQUOTE class="jive-quote"&gt; &lt;BR /&gt;I'd like to organize items (layer items) in the legend control into headings, for example SL headered items or accordion items.&lt;BR /&gt;&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Here is an example of legend control template allowing to organize items into accordion. With this template, there are 3 levels of items (the group layers are not displayed):&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;1) map layer (e.g. dynamicmap service)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;2) SubLayers which are not group layers&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;3) Label+Swatch&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color:blue;"&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&lt;SPAN style="color:blue;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;Style&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; x&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt;Key&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;"Accordion"&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; TargetType&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;"esri:Legend"&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;Setter&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; Property&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;"LayerItemsMode"&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; Value&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;"Flat"&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt; /&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;Setter&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; Property&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;"Foreground"&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; Value&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;"Black"&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt; /&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;Setter&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; Property&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;"Template"&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;Setter.Value&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;ControlTemplate&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; TargetType&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;"esri:Legend"&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;ScrollViewer&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; HorizontalScrollBarVisibility&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;"Auto"&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; VerticalScrollBarVisibility&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;"Auto"&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color:red;"&gt;Background&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;TemplateBinding&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; Background&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;}&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;"&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color:red;"&gt;BorderBrush&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;TemplateBinding&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; BorderBrush&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;}&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;"&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color:red;"&gt;BorderThickness&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;TemplateBinding&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; BorderThickness&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;}&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;"&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;toolkit&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;Accordion&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color:red;"&gt;Background&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;TemplateBinding&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; Background&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;}&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;"&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color:red;"&gt;Foreground&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;"Black"&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color:red;"&gt;ItemsSource&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;TemplateBinding&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; LayerItems&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;}&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;"&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color:red;"&gt;HorizontalAlignment&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;"Stretch"&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color:red;"&gt;SelectionMode&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;"ZeroOrMore"&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;toolkit&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;Accordion.ItemTemplate&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;DataTemplate&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt; &amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:green;"&gt;&amp;lt;!-- Map Layer legend item (1st level in legend hierarchy)--&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;ContentPresenter&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; Content&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;Binding&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;}&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;"&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; ContentTemplate&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;Binding&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; Template&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;}&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;"&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt; /&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;DataTemplate&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;toolkit&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;Accordion.ItemTemplate&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
 
&lt;SPAN style="color:blue;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;toolkit&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;Accordion.ContentTemplate&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;DataTemplate&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
 
&lt;SPAN style="color:blue;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;ItemsControl&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; ItemsSource&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;Binding&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; LayerItemsSource&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;}&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;"&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt; &amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;ItemsControl.ItemTemplate&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;DataTemplate&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;StackPanel&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:green;"&gt;&amp;lt;!-- Layer Item or Legend Item (2nd level in legend hierarchy)--&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;ContentPresenter&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; Content&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;Binding&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;}&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;"&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; ContentTemplate&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;Binding&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; Template&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;}&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;"&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt; /&amp;gt;&lt;/SPAN&gt;
 
&lt;SPAN style="color:blue;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;ItemsControl&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; ItemsSource&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;Binding&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; LegendItems&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;}&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;"&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;ItemsControl.ItemTemplate&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;DataTemplate&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:green;"&gt;&amp;lt;!--Legend items (3rd level = last level due to flat option)--&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;ContentPresenter&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; Content&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;Binding&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;}&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;"&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; ContentTemplate&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;Binding&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; Template&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;}&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;"&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt; /&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;DataTemplate&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;ItemsControl.ItemTemplate&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;ItemsControl&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;StackPanel&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;DataTemplate&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
 
&lt;SPAN style="color:blue;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;ItemsControl.ItemTemplate&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;ItemsControl&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;DataTemplate&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
 
&lt;SPAN style="color:blue;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;toolkit&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;Accordion.ContentTemplate&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;toolkit&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;Accordion&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;ScrollViewer&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;ControlTemplate&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
 
&lt;SPAN style="color:blue;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;Setter.Value&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;Setter&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;Style&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;/PRE&gt;&lt;BR /&gt;Note : the default template is using a treeview so the number of items levels is not limited and we can display group layers inside group layers inside .....&lt;BR /&gt;&lt;SPAN style="color: black; font-family: Tahoma;"&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;&lt;SPAN style="color: black; font-family: Tahoma;"&gt;I have the need to categorize dynamic map service layers according to categories that I retrieve from another web service source. It doesn't appear that the legend control currently offers the capability of tagging or categorizing its layer items.&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BLOCKQUOTE&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; font-family: Tahoma;"&gt;From 2.2, a tag property has been added to the LegendItemViewModel class. This property is designed for the scenario you are talking about (you could store your category in this property).&lt;/SPAN&gt; &lt;BR /&gt; &lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;&lt;BR /&gt;&lt;SPAN style="color:black;"&gt;Ideally I would subclass from LayerItemViewModel and introduce a new property, "Category", for example but that class is sealed.&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;SPAN style="color:#000000;"&gt;Yes, but this would not be that simple because without legend extensibility mechanisn, your class would not be automatically instantiated by the legend control so you would have to do it by code anyway.&lt;/SPAN&gt;&lt;BR /&gt; &lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;&lt;BR /&gt;&lt;SPAN style="color:black;"&gt;Somehow tag a layer item with a category and use this for categorization. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color:black;"&gt;Intercept legend control refresh events and perform my categorization at that point with my own solution in code. Don't know if Legend.Refresh event is intended for this purpose. &lt;/SPAN&gt;&lt;BR /&gt;&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;SPAN style="color:black;"&gt;Looks good. The best is you to use the version 2.2 and the new tag property. For previous version, the layer tag can be an acceptable workaround.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color:#000000;"&gt;The refresh event is intended for this purpose, i.e. modify, add, delete legend items returned by the map services.&lt;/SPAN&gt;&lt;BR /&gt; &lt;BR /&gt;&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sat, 11 Dec 2021 20:00:46 GMT</pubDate>
    <dc:creator>DominiqueBroux</dc:creator>
    <dc:date>2021-12-11T20:00:46Z</dc:date>
    <item>
      <title>Extending Legend Control</title>
      <link>https://community.esri.com/t5/arcgis-api-for-silverlight-questions/extending-legend-control/m-p/447889#M11601</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I'd like to organize items (layer items) in the legend control into headings, for example SL headered items or accordion items.&amp;nbsp; I have the need to categorize dynamic map service layers according to categories that I retrieve from another web service source.&amp;nbsp; It doesn't appear that the legend control currently offers the capability of tagging or categorizing its layer items.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;UL&gt;&lt;BR /&gt;&lt;LI&gt;What are some ideas for the least painful way to accomplish this?&amp;nbsp; I have 2 thoughts but would like to hear other approaches.&amp;nbsp; Ideally I would subclass from LayerItemViewModel and introduce a new property, "Category", for example but that class is sealed.&amp;nbsp; And I don't want to modify ESRI source code if it can be prevented.&lt;/LI&gt;&lt;BR /&gt;&lt;OL&gt;&lt;LI&gt;Somehow tag a layer item with a category and use this for categorization.&lt;/LI&gt;&lt;BR /&gt;&lt;LI&gt;Intercept legend control refresh events and perform my categorization at that point with my own solution in code.&amp;nbsp; Don't know if Legend.Refresh event is intended for this purpose.&lt;/LI&gt;&lt;BR /&gt;&lt;/OL&gt;&lt;/UL&gt;&lt;BR /&gt;&lt;SPAN&gt;I chose to extend the control by deriving from it and creating my own control.&amp;nbsp; My intent was to avoid modifying ESRI's toolkit source for maintainability reasons.&amp;nbsp; With my derived categorized legend control, my goal was then to intercept any Legend.Refresh events and perform the categorization myself in code in my new control.&amp;nbsp; My control template headered items bind to the categories I created.&amp;nbsp; I ran a problem with this approach and have some questions.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;UL&gt;&lt;BR /&gt;&lt;LI&gt;I downloaded legend control source and spent some time reading code and generating object model diagrams.&amp;nbsp; I am trying to wrap my head around the object model, specifically what real-world entities (abstract data types) the layer item, legend item, map layer item, etc. classes represent.&amp;nbsp; The object model seems very slick but somewhat confusing in its complexity/recursive nature.&amp;nbsp; Is there any conceptual level help documentation for toolkit controls beyond the auto-generated stuff at &lt;A href="http://help.arcgis.com/en/webapi/silverlight/apiref/api_start.htm"&gt;http://help.arcgis.com/en/webapi/silverlight/apiref/api_start.htm&lt;/A&gt;&amp;nbsp; Any help even via this forum dialog would be much appreciated.&lt;/LI&gt;&lt;BR /&gt;&lt;LI&gt;The Legend.Refresh event does not fire for all cases as I would expect.&amp;nbsp; My expectation/hope was that whenever any layer was added/removed from the map, the event would fire.&amp;nbsp; I'm using the MVVM pattern.&amp;nbsp; My layer collection is data bound to the map in xaml, my map is data bound to the legend control, and my layerID list is data bound to the legend control to limit which layers appear in the legend control.&amp;nbsp; I spent time debugging and watching when that Refresh event fires.&amp;nbsp; It doesn't fire for all additions or removals of a map layer or change in layerID list.&amp;nbsp; I reverted then to registering for notification of when the Legend's LayerItemsSource dependency property changes which isn't ideal.&lt;/LI&gt;&lt;BR /&gt;&lt;/UL&gt;&lt;SPAN&gt;I recognize that this is a long post and am hoping to just start some dialog with one of the developers of this control.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Dave&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 16 Mar 2011 17:24:08 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-api-for-silverlight-questions/extending-legend-control/m-p/447889#M11601</guid>
      <dc:creator>DavidHollema</dc:creator>
      <dc:date>2011-03-16T17:24:08Z</dc:date>
    </item>
    <item>
      <title>Extending Legend Control (Re: first part)</title>
      <link>https://community.esri.com/t5/arcgis-api-for-silverlight-questions/extending-legend-control/m-p/447890#M11602</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BLOCKQUOTE class="jive-quote"&gt; &lt;BR /&gt;I'd like to organize items (layer items) in the legend control into headings, for example SL headered items or accordion items.&lt;BR /&gt;&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Here is an example of legend control template allowing to organize items into accordion. With this template, there are 3 levels of items (the group layers are not displayed):&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;1) map layer (e.g. dynamicmap service)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;2) SubLayers which are not group layers&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;3) Label+Swatch&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color:blue;"&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&lt;SPAN style="color:blue;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;Style&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; x&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt;Key&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;"Accordion"&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; TargetType&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;"esri:Legend"&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;Setter&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; Property&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;"LayerItemsMode"&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; Value&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;"Flat"&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt; /&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;Setter&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; Property&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;"Foreground"&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; Value&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;"Black"&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt; /&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;Setter&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; Property&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;"Template"&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;Setter.Value&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;ControlTemplate&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; TargetType&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;"esri:Legend"&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;ScrollViewer&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; HorizontalScrollBarVisibility&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;"Auto"&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; VerticalScrollBarVisibility&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;"Auto"&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color:red;"&gt;Background&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;TemplateBinding&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; Background&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;}&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;"&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color:red;"&gt;BorderBrush&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;TemplateBinding&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; BorderBrush&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;}&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;"&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color:red;"&gt;BorderThickness&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;TemplateBinding&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; BorderThickness&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;}&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;"&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;toolkit&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;Accordion&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color:red;"&gt;Background&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;TemplateBinding&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; Background&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;}&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;"&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color:red;"&gt;Foreground&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;"Black"&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color:red;"&gt;ItemsSource&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;TemplateBinding&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; LayerItems&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;}&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;"&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color:red;"&gt;HorizontalAlignment&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;"Stretch"&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color:red;"&gt;SelectionMode&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;"ZeroOrMore"&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;toolkit&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;Accordion.ItemTemplate&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;DataTemplate&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt; &amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:green;"&gt;&amp;lt;!-- Map Layer legend item (1st level in legend hierarchy)--&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;ContentPresenter&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; Content&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;Binding&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;}&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;"&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; ContentTemplate&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;Binding&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; Template&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;}&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;"&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt; /&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;DataTemplate&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;toolkit&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;Accordion.ItemTemplate&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
 
&lt;SPAN style="color:blue;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;toolkit&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;Accordion.ContentTemplate&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;DataTemplate&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
 
&lt;SPAN style="color:blue;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;ItemsControl&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; ItemsSource&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;Binding&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; LayerItemsSource&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;}&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;"&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt; &amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;ItemsControl.ItemTemplate&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;DataTemplate&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;StackPanel&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:green;"&gt;&amp;lt;!-- Layer Item or Legend Item (2nd level in legend hierarchy)--&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;ContentPresenter&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; Content&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;Binding&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;}&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;"&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; ContentTemplate&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;Binding&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; Template&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;}&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;"&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt; /&amp;gt;&lt;/SPAN&gt;
 
&lt;SPAN style="color:blue;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;ItemsControl&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; ItemsSource&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;Binding&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; LegendItems&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;}&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;"&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;ItemsControl.ItemTemplate&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;DataTemplate&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:green;"&gt;&amp;lt;!--Legend items (3rd level = last level due to flat option)--&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;ContentPresenter&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; Content&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;Binding&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;}&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;"&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; ContentTemplate&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;Binding&lt;/SPAN&gt;&lt;SPAN style="color:red;"&gt; Template&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;}&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;"&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt; /&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;DataTemplate&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;ItemsControl.ItemTemplate&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;ItemsControl&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;StackPanel&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;DataTemplate&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
 
&lt;SPAN style="color:blue;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;ItemsControl.ItemTemplate&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;ItemsControl&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;DataTemplate&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
 
&lt;SPAN style="color:blue;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;toolkit&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;Accordion.ContentTemplate&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;toolkit&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;Accordion&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;ScrollViewer&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;ControlTemplate&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
 
&lt;SPAN style="color:blue;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;Setter.Value&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;Setter&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;Style&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;/PRE&gt;&lt;BR /&gt;Note : the default template is using a treeview so the number of items levels is not limited and we can display group layers inside group layers inside .....&lt;BR /&gt;&lt;SPAN style="color: black; font-family: Tahoma;"&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;&lt;SPAN style="color: black; font-family: Tahoma;"&gt;I have the need to categorize dynamic map service layers according to categories that I retrieve from another web service source. It doesn't appear that the legend control currently offers the capability of tagging or categorizing its layer items.&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BLOCKQUOTE&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; font-family: Tahoma;"&gt;From 2.2, a tag property has been added to the LegendItemViewModel class. This property is designed for the scenario you are talking about (you could store your category in this property).&lt;/SPAN&gt; &lt;BR /&gt; &lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;&lt;BR /&gt;&lt;SPAN style="color:black;"&gt;Ideally I would subclass from LayerItemViewModel and introduce a new property, "Category", for example but that class is sealed.&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;SPAN style="color:#000000;"&gt;Yes, but this would not be that simple because without legend extensibility mechanisn, your class would not be automatically instantiated by the legend control so you would have to do it by code anyway.&lt;/SPAN&gt;&lt;BR /&gt; &lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;&lt;BR /&gt;&lt;SPAN style="color:black;"&gt;Somehow tag a layer item with a category and use this for categorization. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color:black;"&gt;Intercept legend control refresh events and perform my categorization at that point with my own solution in code. Don't know if Legend.Refresh event is intended for this purpose. &lt;/SPAN&gt;&lt;BR /&gt;&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;SPAN style="color:black;"&gt;Looks good. The best is you to use the version 2.2 and the new tag property. For previous version, the layer tag can be an acceptable workaround.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color:#000000;"&gt;The refresh event is intended for this purpose, i.e. modify, add, delete legend items returned by the map services.&lt;/SPAN&gt;&lt;BR /&gt; &lt;BR /&gt;&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 20:00:46 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-api-for-silverlight-questions/extending-legend-control/m-p/447890#M11602</guid>
      <dc:creator>DominiqueBroux</dc:creator>
      <dc:date>2021-12-11T20:00:46Z</dc:date>
    </item>
    <item>
      <title>Extending Legend Control (Re: Second part)</title>
      <link>https://community.esri.com/t5/arcgis-api-for-silverlight-questions/extending-legend-control/m-p/447891#M11603</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN style="font-size:3;"&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;Is there any conceptual level help documentation for toolkit controls beyond the auto-generated stuff at &lt;A href="http://help.arcgis.com/en/webapi/sil.../api_start.htm"&gt;http://help.arcgis.com/en/webapi/sil.../api_start.htm&lt;/A&gt; Any help even via this forum dialog would be much appreciated.&lt;/BLOCKQUOTE&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size:3;"&gt;With the source, you get a legend diagram class (legend.cd) which could help.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN style="font-size:3;"&gt;In short, the main classes are:&lt;/SPAN&gt;&lt;BR /&gt;&lt;UL&gt;&lt;BR /&gt;&lt;LI&gt;&lt;SPAN style="font-size:3;"&gt;LegendItemViewModel : Base class for a legend item&lt;/SPAN&gt;&lt;/LI&gt;&lt;BR /&gt;&lt;UL&gt;&lt;BR /&gt;&lt;LI&gt;&lt;SPAN style="font-size:3;"&gt;a label + an image&lt;/SPAN&gt;&lt;/LI&gt;&lt;BR /&gt;&lt;LI&gt;&lt;SPAN style="font-size:3;"&gt;a template to display the item&lt;/SPAN&gt;&lt;/LI&gt;&lt;BR /&gt;&lt;/UL&gt;&lt;LI&gt;&lt;SPAN style="font-size:3;"&gt;LayerItemViewModel : extent the LayerItemViewModel to represent a layer or a sublayer in the legend &lt;/SPAN&gt;&lt;/LI&gt;&lt;BR /&gt;&lt;UL&gt;&lt;BR /&gt;&lt;LI&gt;&lt;SPAN style="font-size:3;"&gt;Additional properties : Layer, SubLayerID, LayerType, MinimumResolution, MaximumResolution, IsInScaleRange). &lt;/SPAN&gt;&lt;/LI&gt;&lt;BR /&gt;&lt;LI&gt;&lt;SPAN style="font-size:3;"&gt;'LayerItems' : returns the collection of layer items at the next level of the legend hierarchy (e.g from a map layer item, you get the group layers and/or the sublayers, from a group layer you get the sublayers and/or the sub group layers)). Here is the recursivity.&lt;/SPAN&gt;&lt;/LI&gt;&lt;BR /&gt;&lt;LI&gt;&lt;SPAN style="font-size:3;"&gt;'LegendItems' : Low level legend items under the layer item.&lt;/SPAN&gt;&lt;/LI&gt;&lt;BR /&gt;&lt;/UL&gt;&lt;LI&gt;&lt;SPAN style="font-size:3;"&gt;Legend : Control itself.&lt;/SPAN&gt;&lt;/LI&gt;&lt;BR /&gt;&lt;UL&gt;&lt;BR /&gt;&lt;LI&gt;&lt;SPAN style="font-size:3;"&gt;'LayerItems' : returns the collection of layer items at the first level of the legend hierarchy (i.e. items corresponding to the map layers). &lt;/SPAN&gt;&lt;/LI&gt;&lt;BR /&gt;&lt;LI&gt;&lt;SPAN style="font-size:3;"&gt;'LayerItemsSource' is a kind of view on the legend items hierarchy taking care of the 'ShowOnlyVisibleLayers' option, and of the Flat/Tree mode. &lt;/SPAN&gt;&lt;/LI&gt;&lt;BR /&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;SPAN style="font-size:3;"&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;The Legend.Refresh event does not fire for all cases as I would expect. My expectation/hope was that whenever any layer was added/removed from the map, the event would fire. &lt;/BLOCKQUOTE&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size:3;"&gt;Not exactly but close. The event is fired each time a first level layer item (i.e a layer item representing a map service) has been refreshed.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN style="font-size:3;"&gt;This happens:&lt;/SPAN&gt;&lt;OL&gt;&lt;BR /&gt;&lt;LI&gt;&lt;SPAN style="font-size:3;"&gt;after adding a layer: as soon as the legend is available (we get the legend asynchronously). &lt;/SPAN&gt;&lt;/LI&gt;&lt;BR /&gt;&lt;LI&gt;&lt;SPAN style="font-size:3;"&gt;when the legend of the map layer has changed (e.g. if the renderer of a feature layer changes). &lt;/SPAN&gt;&lt;/LI&gt;&lt;BR /&gt;&lt;LI&gt;&lt;SPAN style="font-size:3;"&gt;when someone calls 'Refresh' &lt;/SPAN&gt;&lt;/LI&gt;&lt;BR /&gt;&lt;/OL&gt;&lt;SPAN style="font-size:3;"&gt;Concerning the point1, note that there was a (kind of) bug in 2.1, the refreshed event was not fired with the layers that don't support the legend (such as bing map layers or GPResultImageLayer). This had sense since the legend is not really refreshed but nevertheless we decided to fire the event from 2.2 so one could use the event to add by code the legend infos or remove by code the legend item.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size:3;"&gt;�??&lt;/SPAN&gt;&lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;&lt;BR /&gt;&lt;SPAN style="font-size:3;"&gt;It doesn't fire for all additions or removals of a map layer or change in layerID list. I reverted then to registering for notification of when the Legend's LayerItemsSource dependency property changes which isn't ideal. &lt;/SPAN&gt;&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;SPAN style="font-size:3;"&gt;�??&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size:3;"&gt;Map.Layers and Legend.LayerItems being ObservableCollections, the events fired by these collections should cover many scenarios. Let us know if you think something is missing.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;&lt;BR /&gt; &lt;BR /&gt;&lt;SPAN style="font-size:3;"&gt;I recognize that this is a long post and am hoping to just start some dialog with one of the developers of this control.&lt;/SPAN&gt;&lt;BR /&gt; &lt;BR /&gt;&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;SPAN style="font-size:3;"&gt;Long question : long answer. I got this error during my first try:mad: : &lt;/SPAN&gt;&lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 3;"&gt;&lt;SPAN style="font-size:3;"&gt;The text that you have entered is too long (13167 characters). Please shorten it to 10000 characters long. &lt;/SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;SPAN style="font-size:3;"&gt;So I have had to answer in 2 parts.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size:3;"&gt;Hope this help.:)&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 16 Mar 2011 23:05:35 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-api-for-silverlight-questions/extending-legend-control/m-p/447891#M11603</guid>
      <dc:creator>DominiqueBroux</dc:creator>
      <dc:date>2011-03-16T23:05:35Z</dc:date>
    </item>
    <item>
      <title>Re: Extending Legend Control</title>
      <link>https://community.esri.com/t5/arcgis-api-for-silverlight-questions/extending-legend-control/m-p/447892#M11604</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Thanks for the quick response.&amp;nbsp; More questions.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;None of the notification mechanisms from Legend (Refresh event, LayerItems, LayerItemsSource property changed) do exactly what I want.&amp;nbsp; I'm looking for a way to be notified when I 1)add a layer and 2) remove a layer.&amp;nbsp; I'm changing this layer collection in code behind (architecturally speaking it's done in the view model and service layer) and the map is data binding to this collection.&amp;nbsp; I checked and Refresh event does not fire when I remove a layer from this collection although the map and the legend control do get updated.&amp;nbsp; I see that you confirmed that with your list...&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;This happens:&lt;BR /&gt;&lt;OL&gt;&lt;BR /&gt;&lt;LI&gt;after adding a layer: as soon as the legend is available (we get the legend asynchronously).&lt;/LI&gt;&lt;BR /&gt;&lt;LI&gt;when the legend of the map layer has changed (e.g. if the renderer of a feature layer changes).&lt;/LI&gt;&lt;BR /&gt;&lt;LI&gt;when someone calls 'Refresh&lt;/LI&gt;&lt;BR /&gt;&lt;/OL&gt;&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN style="text-decoration:underline;"&gt;Dependency Properties approach&lt;/SPAN&gt;&lt;SPAN&gt;.&amp;nbsp; The problem with LayerItems dependency property is it's not updated consistently enough (I know that's vague but it's been a couple weeks since I looked at it).&amp;nbsp; The problem with LayerItemsSource dependency property is it's updated too often.&amp;nbsp; For example, I apply a double click action to zoom into the map based on a layer extent.&amp;nbsp; These dependency property change notification occurs at that point even though I'm not adding or removing layers.&amp;nbsp; I bet it's because the scale has changed and legend is refreshing scale dependencies.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I believe that the Refresh event would be ideal for me to listen to if it were fired when a layer was removed from the map.&amp;nbsp; Can you consider adding this?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Next question.&amp;nbsp; You gave an excellent explanation of 3 of the classes.&amp;nbsp; They make sense.&amp;nbsp; I'm still confused about the 2 biggie properties on the Legend control, Legend.LayerItems versus Legend.LayerItemsSource.&amp;nbsp; I'm using the control in a flat fashion (no tree structure). In that case, is Legend.LayerItems identical to Legend.LayerItemsSource?&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Last question.&amp;nbsp; What is the purpose of composing your Legend control with that LegendTree class?&amp;nbsp; I'm trying to understand/curious about why that additional class member was introduced into the design.&amp;nbsp; I guess that's the one confusing me most since it is also a type of LayerItemViewModel.&amp;nbsp; The cyclic nature in the class design is what's confusing me -- LegendTree is a LayerItemViewModel and Legend has a LegendTree and LegendTree has LayerItemViewModels and Legend has LayerItemViewModels, etc.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 17 Mar 2011 20:23:44 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-api-for-silverlight-questions/extending-legend-control/m-p/447892#M11604</guid>
      <dc:creator>DavidHollema</dc:creator>
      <dc:date>2011-03-17T20:23:44Z</dc:date>
    </item>
    <item>
      <title>Re: Extending Legend Control</title>
      <link>https://community.esri.com/t5/arcgis-api-for-silverlight-questions/extending-legend-control/m-p/447893#M11605</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;None of the notification mechanisms from Legend (Refresh event, LayerItems, LayerItemsSource property changed) do exactly what I want. I'm looking for a way to be notified when I 1)add a layer and 2) remove a layer.&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;SPAN&gt;LayerItems property changed should do the trick (see below).&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;The problem with LayerItems dependency property is it's not updated consistently enough (I know that's vague but it's been a couple weeks since I looked at it). &lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;SPAN&gt;I am interested to get more details about the issue.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;In Silverlight the difficulty is to be notified when a DP changed but the following code seems to notify me when a layer is added or removed from the legend (either by changing the map layers or by changing the LayerIds property).&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color:blue;"&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&lt;SPAN style="color:blue;"&gt;private&lt;/SPAN&gt; &lt;SPAN style="color:blue;"&gt;void&lt;/SPAN&gt; MyLegend_Loaded(&lt;SPAN style="color:blue;"&gt;object&lt;/SPAN&gt; sender, &lt;SPAN style="color:#2b91af;"&gt;RoutedEventArgs&lt;/SPAN&gt; e)
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; RegisterForNotification(&lt;SPAN style="color:#a31515;"&gt;"LayerItems"&lt;/SPAN&gt;, sender &lt;SPAN style="color:blue;"&gt;as&lt;/SPAN&gt; Client.Toolkit.&lt;SPAN style="color:#2b91af;"&gt;Legend&lt;/SPAN&gt;, LayerItemsChanged);
}
 
&lt;SPAN style="color:blue;"&gt;void&lt;/SPAN&gt; LayerItemsChanged(&lt;SPAN style="color:#2b91af;"&gt;DependencyObject&lt;/SPAN&gt; d, &lt;SPAN style="color:#2b91af;"&gt;DependencyPropertyChangedEventArgs&lt;/SPAN&gt; e)
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color:#2b91af;"&gt;Debug&lt;/SPAN&gt;.WriteLine(&lt;SPAN style="color:#a31515;"&gt;"LayerItems changed count = {0}"&lt;/SPAN&gt;, (d &lt;SPAN style="color:blue;"&gt;as&lt;/SPAN&gt; Client.Toolkit.&lt;SPAN style="color:#2b91af;"&gt;Legend&lt;/SPAN&gt;).LayerItems.Count());
}
 
&lt;SPAN style="color:gray;"&gt;///&lt;/SPAN&gt;&lt;SPAN style="color:green;"&gt; Listen for change of the dependency property&amp;nbsp; &lt;/SPAN&gt;
&lt;SPAN style="color:blue;"&gt;public&lt;/SPAN&gt; &lt;SPAN style="color:blue;"&gt;void&lt;/SPAN&gt; RegisterForNotification(&lt;SPAN style="color:blue;"&gt;string&lt;/SPAN&gt; propertyName, &lt;SPAN style="color:#2b91af;"&gt;FrameworkElement&lt;/SPAN&gt; element, &lt;SPAN style="color:#2b91af;"&gt;PropertyChangedCallback&lt;/SPAN&gt; callback)&amp;nbsp; 
{&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color:green;"&gt;//Bind to a dependency property&amp;nbsp; &lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color:#2b91af;"&gt;Binding&lt;/SPAN&gt; b = &lt;SPAN style="color:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="color:#2b91af;"&gt;Binding&lt;/SPAN&gt;(propertyName) { Source = element };&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color:blue;"&gt;var&lt;/SPAN&gt; prop = System.Windows.&lt;SPAN style="color:#2b91af;"&gt;DependencyProperty&lt;/SPAN&gt;.RegisterAttached(&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color:#a31515;"&gt;"ListenAttached"&lt;/SPAN&gt;+propertyName,&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color:blue;"&gt;typeof&lt;/SPAN&gt;(&lt;SPAN style="color:blue;"&gt;object&lt;/SPAN&gt;),&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color:blue;"&gt;typeof&lt;/SPAN&gt;(&lt;SPAN style="color:#2b91af;"&gt;UserControl&lt;/SPAN&gt;),&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color:blue;"&gt;new&lt;/SPAN&gt; System.Windows.&lt;SPAN style="color:#2b91af;"&gt;PropertyMetadata&lt;/SPAN&gt;(callback));&amp;nbsp; 
 
&amp;nbsp;&amp;nbsp;&amp;nbsp; element.SetBinding(prop, b);&amp;nbsp; 
}&lt;/PRE&gt;&lt;/SPAN&gt;&lt;BLOCKQUOTE class="jive-quote"&gt; &lt;BR /&gt;The problem with LayerItemsSource dependency property is it's updated too often.&lt;BR /&gt;&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;SPAN&gt;You are right. The hierarchy of the legend items can be depending on the scale and so can change when zooming.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;I believe that the Refresh event would be ideal for me to listen to if it were fired when a layer was removed from the map. Can you consider adding this?&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;SPAN&gt;The meaning of this event is not 'The legend has been refreshed' but 'One layer item (given as arg) of the legend has been refreshed'.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;We could imagine to fire this event as well when a layer item is added or removed, but we should add an info in the eventargs (item refreshed, item added, item removed) and probably rename the event to 'Changed' (an item which is removed is not really 'Refreshed').&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;(Furthermore in my mind, LayerItems property changed should do the trick)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;Next question. You gave an excellent explanation of 3 of the classes. They make sense. I'm still confused about the 2 biggie properties on the Legend control, Legend.LayerItems versus Legend.LayerItemsSource. I'm using the control in a flat fashion (no tree structure). In that case, is Legend.LayerItems identical to Legend.LayerItemsSource? &lt;BR /&gt;&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;SPAN&gt;Not identical.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Legend.LayerItems is always returning the map layer items participating to the legend (i.e. the first level of items in the legend hierarchy even if these items are not displayed in the legend).&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Legend.LayerItemsSource in flat mode returns only the last level of layer items (i.e. doesn't return the map service layers nor the group layers).&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;This property make easier the legend templating by providing the items which have to be displayed.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;The default template is using LayerItemsSource but more complex scenario can mix LayerItems and LayerItemsSource. Perhaps you noticed that the accordion sample I gave was using 'LayerItems' for the first level (so all map layer items are displayed in the legend control) and is using 'LayerItemsSource' for the next level (so the group layers are not displayed).&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;What is the purpose of composing your Legend control with that LegendTree class?&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;SPAN&gt;The legend items being organized as an hierarchical tree, we can consider that there is a root node somewhere allowing to walk though the whole tree. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;The LegendTree object represents this virtual root node which is never displayed (there is one root node by legend). This object manages the event coming the map and impacting the whole legend tree (layer added, layer removed, scale changed, ...) &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;This root node implements 'LayerItemViewModel' so all the tree nodes implements the same interface (and mainly LayerItems property which gives the children of the node) and, so, walking though the tree is easier to develop (but for sure this could have been done another way, but anyway LegendTree is an internal class).&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Hope this help&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 20:00:49 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-api-for-silverlight-questions/extending-legend-control/m-p/447893#M11605</guid>
      <dc:creator>DominiqueBroux</dc:creator>
      <dc:date>2021-12-11T20:00:49Z</dc:date>
    </item>
    <item>
      <title>Re: Extending Legend Control</title>
      <link>https://community.esri.com/t5/arcgis-api-for-silverlight-questions/extending-legend-control/m-p/447894#M11606</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;The solution that worked for me is as follows.&amp;nbsp; I listen to the Legend.Refreshed event as well as registering for notification of the Legend.LayerIDs property changed.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;//listens for layer added to legend but not removed
base.Refreshed += new EventHandler&amp;lt;RefreshedEventArgs&amp;gt;(BinLegend_Refreshed);

//listens for layer removed from layer id collection
DependencyPropertyUtilities.RegisterForNotification("LayerIDs", this, LayerIDsChanged);&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The trouble with registering for change notification on dependency property LayerItems is that at the time of notification, any LayerItems under the specific LayerItem that has been changed (sub-layer items) are null.&amp;nbsp; In my application, I need to access the sublayer items.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm open to hearing any other solutions for accomplishing this.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 20:00:51 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-api-for-silverlight-questions/extending-legend-control/m-p/447894#M11606</guid>
      <dc:creator>DavidHollema</dc:creator>
      <dc:date>2021-12-11T20:00:51Z</dc:date>
    </item>
    <item>
      <title>Re: Extending Legend Control Asyncronous creation of legend control</title>
      <link>https://community.esri.com/t5/arcgis-api-for-silverlight-questions/extending-legend-control/m-p/447895#M11607</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I have multiple layerIds and by default set ShowOnlyVisibleLayers=true.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I have a checkbox SHOW ALL LAYERS that sets ShowOnlyVisibleLayers to false...&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;The legend is created SYNCRONOUSLY and user cannot do anything while it is being generated.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I'd like to extend legend control to create it asynchronously.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;How Can I do this?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 05 Apr 2012 14:48:53 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-api-for-silverlight-questions/extending-legend-control/m-p/447895#M11607</guid>
      <dc:creator>AnastasiaAourik</dc:creator>
      <dc:date>2012-04-05T14:48:53Z</dc:date>
    </item>
    <item>
      <title>Re: Extending Legend Control</title>
      <link>https://community.esri.com/t5/arcgis-api-for-silverlight-questions/extending-legend-control/m-p/447896#M11608</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;I have a checkbox SHOW ALL LAYERS that sets ShowOnlyVisibleLayers to false...&lt;BR /&gt;The legend is created SYNCRONOUSLY and user cannot do anything while it is being generated.&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;SPAN&gt;The legend is not created when setting ShowOnlyVisibleLayers to false.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;At that moment the legend items are already created and the LayerItemsSource is just changed to return all layers. Then the UI is automatically updated to reflect that change.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The difficulty to make that part asynchronous is that the UI updates have to be done in the UI thread.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;That being said there is probably lot of things that could be optimized.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;The source code of the legend is published &lt;/SPAN&gt;&lt;A href="http://esrisilverlight.codeplex.com/"&gt;here&lt;/A&gt;&lt;SPAN&gt; and can be tweaked for your need.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I'll be interested in all optimizations that you could get.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 06 Apr 2012 09:29:39 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-api-for-silverlight-questions/extending-legend-control/m-p/447896#M11608</guid>
      <dc:creator>DominiqueBroux</dc:creator>
      <dc:date>2012-04-06T09:29:39Z</dc:date>
    </item>
    <item>
      <title>Re: Extending Legend Control (Re: Second part)</title>
      <link>https://community.esri.com/t5/arcgis-api-for-silverlight-questions/extending-legend-control/m-p/447897#M11609</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Dominique, know this is an old thread, are you still around ?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 23 Feb 2016 20:02:16 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-api-for-silverlight-questions/extending-legend-control/m-p/447897#M11609</guid>
      <dc:creator>BrianFoley1</dc:creator>
      <dc:date>2016-02-23T20:02:16Z</dc:date>
    </item>
  </channel>
</rss>

