<?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 sublayer visibility through datatemplate in ArcGIS API for Silverlight Questions</title>
    <link>https://community.esri.com/t5/arcgis-api-for-silverlight-questions/sublayer-visibility-through-datatemplate/m-p/385661#M10017</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;SPAN&gt;I'm dealing with a few different types of layers (WMSlayer and dynamicservicelayer) that are composed of several sublayers.&amp;nbsp; I've bound them to a treeview, so that each layer service is a parent node with child nodes for the sublayers.&amp;nbsp; I'd like to implement controls that toggle the visibility of the sublayers.&amp;nbsp; I've looked at the sublayer API sample online as a guide, and it works great - provided you only have 1 service, as the service name is hardcoded in the example.&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm having a difficult time trying to reference the parent service layer from within my nested datatemplate.&amp;nbsp; The hierarchicaldatetemplate needs to be nested (at least I think it does) because the same property (Name) is not valid for both parent and child layers of a service.&amp;nbsp; The sticking point is the childTemplate CheckBox Name...I'd like to be able to reference/bind the name of the parent service, but I can't figure out how...either in codebehind or in XAML binding. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="plain" name="code"&gt;
&amp;lt;sdk:HierarchicalDataTemplate x:Key="childTemplate" ItemsSource="{Binding Layers}"&amp;gt;
&amp;nbsp;&amp;nbsp; &amp;lt;StackPanel Orientation="Horizontal"&amp;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;lt;!--Layer visibility checkbox--&amp;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;lt;CheckBox Name="CurrentEvents" IsChecked="{Binding DefaultVisibility, Mode=TwoWay}" 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VerticalAlignment="Center" Tag="{Binding ID}" ClickMode="Press" Click="CheckBox_Click" /&amp;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;lt;!--Layer name--&amp;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;lt;TextBlock Text="{Binding Name, Mode=OneWay}" Width="75" Foreground="AntiqueWhite" Margin="5,0,0,0" 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VerticalAlignment="Center" &amp;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;lt;/TextBlock&amp;gt;
&amp;nbsp;&amp;nbsp; &amp;lt;/StackPanel&amp;gt;
&amp;nbsp; &amp;lt;/sdk:HierarchicalDataTemplate&amp;gt;
&amp;nbsp; &amp;lt;sdk:HierarchicalDataTemplate x:Key="categoryTemplate1"&amp;nbsp; ItemsSource="{Binding Layers}" ItemTemplate="{StaticResource childTemplate}" &amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;StackPanel Orientation="Horizontal"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;CheckBox IsChecked="{Binding Visible, Mode=TwoWay}" VerticalAlignment="Center" /&amp;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;lt;!--Opacity slider--&amp;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;lt;Slider Margin="-5,0,0,0" Minimum="0" Maximum="1" Width="30" 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Value="{Binding Opacity, Mode=TwoWay}" Height="18" /&amp;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;lt;TextBlock Text="{Binding ID}" /&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/StackPanel&amp;gt;
&amp;nbsp; &amp;lt;/sdk:HierarchicalDataTemplate&amp;gt;&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 07 Jul 2010 19:02:02 GMT</pubDate>
    <dc:creator>MikeTischler</dc:creator>
    <dc:date>2010-07-07T19:02:02Z</dc:date>
    <item>
      <title>sublayer visibility through datatemplate</title>
      <link>https://community.esri.com/t5/arcgis-api-for-silverlight-questions/sublayer-visibility-through-datatemplate/m-p/385661#M10017</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;SPAN&gt;I'm dealing with a few different types of layers (WMSlayer and dynamicservicelayer) that are composed of several sublayers.&amp;nbsp; I've bound them to a treeview, so that each layer service is a parent node with child nodes for the sublayers.&amp;nbsp; I'd like to implement controls that toggle the visibility of the sublayers.&amp;nbsp; I've looked at the sublayer API sample online as a guide, and it works great - provided you only have 1 service, as the service name is hardcoded in the example.&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm having a difficult time trying to reference the parent service layer from within my nested datatemplate.&amp;nbsp; The hierarchicaldatetemplate needs to be nested (at least I think it does) because the same property (Name) is not valid for both parent and child layers of a service.&amp;nbsp; The sticking point is the childTemplate CheckBox Name...I'd like to be able to reference/bind the name of the parent service, but I can't figure out how...either in codebehind or in XAML binding. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="plain" name="code"&gt;
&amp;lt;sdk:HierarchicalDataTemplate x:Key="childTemplate" ItemsSource="{Binding Layers}"&amp;gt;
&amp;nbsp;&amp;nbsp; &amp;lt;StackPanel Orientation="Horizontal"&amp;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;lt;!--Layer visibility checkbox--&amp;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;lt;CheckBox Name="CurrentEvents" IsChecked="{Binding DefaultVisibility, Mode=TwoWay}" 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VerticalAlignment="Center" Tag="{Binding ID}" ClickMode="Press" Click="CheckBox_Click" /&amp;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;lt;!--Layer name--&amp;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;lt;TextBlock Text="{Binding Name, Mode=OneWay}" Width="75" Foreground="AntiqueWhite" Margin="5,0,0,0" 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VerticalAlignment="Center" &amp;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;lt;/TextBlock&amp;gt;
&amp;nbsp;&amp;nbsp; &amp;lt;/StackPanel&amp;gt;
&amp;nbsp; &amp;lt;/sdk:HierarchicalDataTemplate&amp;gt;
&amp;nbsp; &amp;lt;sdk:HierarchicalDataTemplate x:Key="categoryTemplate1"&amp;nbsp; ItemsSource="{Binding Layers}" ItemTemplate="{StaticResource childTemplate}" &amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;StackPanel Orientation="Horizontal"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;CheckBox IsChecked="{Binding Visible, Mode=TwoWay}" VerticalAlignment="Center" /&amp;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;lt;!--Opacity slider--&amp;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;lt;Slider Margin="-5,0,0,0" Minimum="0" Maximum="1" Width="30" 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Value="{Binding Opacity, Mode=TwoWay}" Height="18" /&amp;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;lt;TextBlock Text="{Binding ID}" /&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/StackPanel&amp;gt;
&amp;nbsp; &amp;lt;/sdk:HierarchicalDataTemplate&amp;gt;&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 07 Jul 2010 19:02:02 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-api-for-silverlight-questions/sublayer-visibility-through-datatemplate/m-p/385661#M10017</guid>
      <dc:creator>MikeTischler</dc:creator>
      <dc:date>2010-07-07T19:02:02Z</dc:date>
    </item>
    <item>
      <title>Re: sublayer visibility through datatemplate</title>
      <link>https://community.esri.com/t5/arcgis-api-for-silverlight-questions/sublayer-visibility-through-datatemplate/m-p/385662#M10018</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN style="font-size: 2; font-family: Consolas;"&gt;&lt;SPAN style="font-size: 2; font-family: Consolas;"&gt;One option is to use the datacontext of the layer TreeViewItem.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 2; font-family: Consolas;"&gt;You have to get the sublayer treeview item and go up the hierarchy to get the layer treeview item.&lt;/SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt; 
private TreeViewItem GetTreeViewItem(DependencyObject item)
{
while ((item = VisualTreeHelper.GetParent(item)) != null)
{
if (item is TreeViewItem)
return (TreeViewItem)item;
}
return null;
}
 
private void CheckBox_Click(object sender, RoutedEventArgs e)
{
CheckBox tickedCheckBox = sender as CheckBox;
 
TreeViewItem tviSubLayer = GetTreeViewItem(tickedCheckBox);
TreeViewItem tviLayer = tviSubLayer.GetParentTreeViewItem();
Layer layer = tviLayer.DataContext as Layer;
 
....... Now you can use all layer properties/methods
&lt;/PRE&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;But this will not solve the second issue concerning the template which should be different for DynamicMapServiceLayer and for WMSLayer. As Silverlight doesn't support 'ItemTemplateSelector' nor 'DataType', it might not be that easy if your don't create your own hierarchical data stucture.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 17:43:50 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-api-for-silverlight-questions/sublayer-visibility-through-datatemplate/m-p/385662#M10018</guid>
      <dc:creator>DominiqueBroux</dc:creator>
      <dc:date>2021-12-11T17:43:50Z</dc:date>
    </item>
    <item>
      <title>Re: sublayer visibility through datatemplate</title>
      <link>https://community.esri.com/t5/arcgis-api-for-silverlight-questions/sublayer-visibility-through-datatemplate/m-p/385663#M10019</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Thanks for the reply.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I ended up using the Silverlight Tableofcontents control from the code gallery, and adapting that.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 19 Jul 2010 12:09:46 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-api-for-silverlight-questions/sublayer-visibility-through-datatemplate/m-p/385663#M10019</guid>
      <dc:creator>MikeTischler</dc:creator>
      <dc:date>2010-07-19T12:09:46Z</dc:date>
    </item>
  </channel>
</rss>

