Solved! Go to Solution.
<Style TargetType="esri:Legend"> <Setter Property="LayerItemsMode" Value="Flat" /> <Setter Property="LayerTemplate"> <Setter.Value> <DataTemplate> <StackPanel Orientation="Horizontal"> <CheckBox Content="{Binding Label}" IsChecked="{Binding IsEnabled, Mode=TwoWay}" IsEnabled="{Binding IsInScaleRange}" > </CheckBox> </StackPanel> </DataTemplate> </Setter.Value> </Setter> <Setter Property="MapLayerTemplate"> <Setter.Value> <DataTemplate> <StackPanel Orientation="Horizontal"> <CheckBox Content="{Binding Label}" IsChecked="{Binding IsEnabled, Mode=TwoWay}" IsEnabled="{Binding IsInScaleRange}" > </CheckBox> </StackPanel> </DataTemplate> </Setter.Value> </Setter> </Style>
<userControls:DraggableWindow IsOpen="True" x:Name="MapLegendWindow" Margin="0,280,20,0" VerticalAlignment="Top" HorizontalAlignment="Right" Width="212" Height="231" Padding="0" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Title="Map Legend" Background="{StaticResource BaseColor}"> <i:Interaction.Triggers> <i:EventTrigger> <actions:ToggleWindowVisibilityAction /> <!-- Hide at startup --> </i:EventTrigger> </i:Interaction.Triggers> <esri:Legend x:Name="Legend" Map="{Binding ElementName=MyMap}" LayerIDs="Schools, Base Layers" LayerItemsMode="Flat" ShowOnlyVisibleLayers="False" Refreshed="Legend_Refreshed"/> </userControls:DraggableWindow> </Grid>
private void Legend_Refreshed(object sender, Legend.RefreshedEventArgs e) { LayerItemViewModel removeLayerItemVM = null; if (e.LayerItem.LayerItems != null) { foreach (LayerItemViewModel layerItemVM in e.LayerItem.LayerItems) { if (layerItemVM.IsExpanded) layerItemVM.IsExpanded = false; } if (removeLayerItemVM != null) e.LayerItem.LayerItems.Remove(removeLayerItemVM); } else { e.LayerItem.IsExpanded = false; } }