<?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 Re: Default to collapsed legend items in ArcGIS Runtime SDK for WPF (Retired) Questions</title>
    <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-wpf-retired-questions/default-to-collapsed-legend-items/m-p/607117#M3133</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Mike,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks for your response.&amp;nbsp; I considered handling the legend refreshed event, however I am using MVVM and that approach does not work well with the pattern.&amp;nbsp; I may have a way to get around the MVVM issue, but it's not ideal.&amp;nbsp; Do you have any suggestions on how to handle the event while maintaining strict adherence to MVVM (no code-behind)?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Cory&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 11 Apr 2012 12:49:53 GMT</pubDate>
    <dc:creator>CorySchinkel</dc:creator>
    <dc:date>2012-04-11T12:49:53Z</dc:date>
    <item>
      <title>Default to collapsed legend items</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-wpf-retired-questions/default-to-collapsed-legend-items/m-p/607115#M3131</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Is there a property I can set so that items in the legend default to collapsed?&amp;nbsp; I am using the legend in tree mode and consuming a map service that has 30 layers in it.&amp;nbsp; When the layer loads the tree node expands and I can't find a way to prevent this (short of using control templates).&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Cory&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 10 Apr 2012 20:56:33 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-wpf-retired-questions/default-to-collapsed-legend-items/m-p/607115#M3131</guid>
      <dc:creator>CorySchinkel</dc:creator>
      <dc:date>2012-04-10T20:56:33Z</dc:date>
    </item>
    <item>
      <title>Re: Default to collapsed legend items</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-wpf-retired-questions/default-to-collapsed-legend-items/m-p/607116#M3132</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;One approach is to follow this example in the SilverLight forum: &lt;/SPAN&gt;&lt;A href="http://forums.arcgis.com/threads/43928-How-to-collapse-the-map-service-node-in-Legend-by-default"&gt;http://forums.arcgis.com/threads/43928-How-to-collapse-the-map-service-node-in-Legend-by-default&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Cheers&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Mike&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 11 Apr 2012 12:25:49 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-wpf-retired-questions/default-to-collapsed-legend-items/m-p/607116#M3132</guid>
      <dc:creator>MichaelBranscomb</dc:creator>
      <dc:date>2012-04-11T12:25:49Z</dc:date>
    </item>
    <item>
      <title>Re: Default to collapsed legend items</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-wpf-retired-questions/default-to-collapsed-legend-items/m-p/607117#M3133</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Mike,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks for your response.&amp;nbsp; I considered handling the legend refreshed event, however I am using MVVM and that approach does not work well with the pattern.&amp;nbsp; I may have a way to get around the MVVM issue, but it's not ideal.&amp;nbsp; Do you have any suggestions on how to handle the event while maintaining strict adherence to MVVM (no code-behind)?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Cory&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 11 Apr 2012 12:49:53 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-wpf-retired-questions/default-to-collapsed-legend-items/m-p/607117#M3133</guid>
      <dc:creator>CorySchinkel</dc:creator>
      <dc:date>2012-04-11T12:49:53Z</dc:date>
    </item>
    <item>
      <title>Re: Default to collapsed legend items</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-wpf-retired-questions/default-to-collapsed-legend-items/m-p/607118#M3134</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;Mike,&lt;BR /&gt;&lt;BR /&gt;Thanks for your response.&amp;nbsp; I considered handling the legend refreshed event, however I am using MVVM and that approach does not work well with the pattern.&amp;nbsp; I may have a way to get around the MVVM issue, but it's not ideal.&amp;nbsp; Do you have any suggestions on how to handle the event while maintaining strict adherence to MVVM (no code-behind)?&lt;BR /&gt;&lt;BR /&gt;Thanks,&lt;BR /&gt;Cory&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I guess you would be able to solve this by implementing a WPF behavior using attached properties.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 11 Apr 2012 13:14:05 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-wpf-retired-questions/default-to-collapsed-legend-items/m-p/607118#M3134</guid>
      <dc:creator>BKuiper</dc:creator>
      <dc:date>2012-04-11T13:14:05Z</dc:date>
    </item>
    <item>
      <title>Re: Default to collapsed legend items</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-wpf-retired-questions/default-to-collapsed-legend-items/m-p/607119#M3135</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;A colleague and I came up with a solution to this problem. I wanted to use EventTriggers to handle the Legend Refresh event in my ViewModel, the problem is that EventTriggers do not support passing EventArgs. That is another topic all together, why event args are not passed with the EventTrigger. Anyway, my colleague extended the EventTrigger so that it supports passing the event args and it works great.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I will attempt to explain how it all comes together. In the view, a trigger is added to the legend control:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="plain" name="code"&gt;&amp;lt;esri:Legend Map="{Binding ElementName=MyMap}"[INDENT]LayerItemsMode="Tree"&amp;gt; &amp;lt;i:Interaction.Triggers&amp;gt;[/INDENT] [INDENT=2]&amp;lt;i:EventTrigger EventName="Refreshed" &amp;gt;[/INDENT] [INDENT=3]&amp;lt;Commands:InvokeCommandActionWithArgs Command="{Binding LegendRefreshedCommand}" /&amp;gt;[/INDENT] [INDENT=2]&amp;lt;/i:EventTrigger&amp;gt;[/INDENT] [INDENT]&amp;lt;/i:Interaction.Triggers&amp;gt;[/INDENT] &amp;lt;/esri:Legend&amp;gt;&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;SPAN style="color:blue;"&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;The key thing to notice here is&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt; &lt;SPAN style="color:#a31515;"&gt;Commands&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="color:#a31515;"&gt;InvokeCommandActionWithArgs. &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;This is an extended version of TriggerAction and looks like:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="plain" name="code"&gt;public class InvokeCommandActionWithArgs : TriggerAction&amp;lt;DependencyObject&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static DependencyProperty CommandProperty = &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DependencyProperty.Register("Command", typeof(ICommand), &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; typeof(InvokeCommandActionWithArgs)); &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public ICommand Command &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get { return GetValue(CommandProperty) as ICommand; } &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set { SetValue(CommandProperty, value); } &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected override void Invoke(object parameter) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (Command == null) return; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Command.Execute(parameter); &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN style="color:blue;"&gt;&lt;SPAN style="color:#222222;"&gt;Also notice in the view that the command binding for the Triggeraction is &lt;SPAN style="color:#ff0000;"&gt;Command&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; LegendRefreshedCommand&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;}&lt;/SPAN&gt;&lt;SPAN style="color:blue;"&gt;"&lt;/SPAN&gt; . LegendRefreshedCommand is defined in our ViewModel which looks something like:&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;PRE class="plain" name="code"&gt;public class MainWindowViewModel&amp;nbsp;&amp;nbsp;&amp;nbsp; { &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public ICommand LegendRefreshedCommand { get; private set; } &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public MainWindowViewModel() &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LegendRefreshedCommand = new RelayCommand&amp;lt;Legend.RefreshedEventArgs&amp;gt;(OnLegendRefresh, null); &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void OnLegendRefresh(Legend.RefreshedEventArgs refreshedEventArgs) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; refreshedEventArgs.LayerItem.IsExpanded = false; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;SPAN style="color:#222222;"&gt;&lt;BR /&gt;&lt;BR /&gt;When the Refreshed event on the legend is bound to the LegendRefreshedCommand on the viewmodel via the extended TriggerAction the OnLegendRefresh method will handle the event. The RefreshedEventArgs are passed in and the LayerItem can now be accessed and the IsExpanded property set to false. This is the piece that is missing when using the plain EventTrigger, because it does not pass the event args. &lt;BR /&gt;&lt;BR /&gt;Hopefully that all makes sense and is easy to follow. I have attached a very simple reference project that might make it more clear.&lt;BR /&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 11 Apr 2012 17:19:57 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-wpf-retired-questions/default-to-collapsed-legend-items/m-p/607119#M3135</guid>
      <dc:creator>CorySchinkel</dc:creator>
      <dc:date>2012-04-11T17:19:57Z</dc:date>
    </item>
  </channel>
</rss>

