<esri:Legend.LegendItemTemplate> <DataTemplate> <StackPanel Orientation="Horizontal"> <Image Source="{Binding ImageSource}" HorizontalAlignment="Center" VerticalAlignment="Center" Height="30" Width="50" /> <TextBlock Text="{Binding Label}" Margin="5,0,0,0" VerticalAlignment="Center" /> </StackPanel> </DataTemplate> </esri:Legend.LegendItemTemplate>
<esri:Legend.LegendItemTemplate> <DataTemplate> <StackPanel Orientation="Horizontal"> <StackPanel.Resources> <esri:MultiplicationConverter x:Key="multiplicationConverter" /> </StackPanel.Resources> <Image x:Name="img" Source="{Binding ImageSource}" Stretch="Uniform" MinWidth="25" Height="{Binding Source.PixelHeight, ElementName=img, FallbackValue=25, Converter={StaticResource multiplicationConverter}, ConverterParameter=1.4}" Width="{Binding Source.PixelWidth, ElementName=img, FallbackValue=25, Converter={StaticResource multiplicationConverter}, ConverterParameter=1.4}" Margin="0,0,5,0"> </Image> <TextBlock Text="{Binding Label}" Margin="5,0,0,0" VerticalAlignment="Center" /> </StackPanel> </DataTemplate> </esri:Legend.LegendItemTemplate>
<esri:Legend.LegendItemTemplate> <DataTemplate> <StackPanel Orientation="Horizontal"> <Image Source="{Binding ImageSource}" Stretch="Uniform" MinWidth="20" Height="{Binding Tag.Item1}" Width="{Binding Tag.Item2}"/> <TextBlock Text="{Binding Label}" Margin="5,0,0,0" VerticalAlignment="Center" /> </StackPanel> </DataTemplate> </esri:Legend.LegendItemTemplate>
private void Legend_Refreshed(object sender, Legend.RefreshedEventArgs e) { if (e.LayerItem.LegendItems != null) foreach (var item in e.LayerItem.LegendItems) // loop on legendItems at the layer level SetTag(item, e.LayerItem.Layer); if (e.LayerItem.LayerItems != null) foreach (var subitem in e.LayerItem.LayerItems.Where(layerItem => layerItem.LegendItems != null).SelectMany(item => item.LegendItems)) // loop on legendItems at the sublayer level SetTag(subitem, e.LayerItem.Layer); } // Set the Tag with the expected size of the legend swatch private static void SetTag(LegendItemViewModel item, Layer layer) { double ratio = layer is FeatureLayer ? 1 : 1.5; // size based on the layer type (for the sample sake) var source = item.ImageSource as BitmapSource; if (source != null) item.Tag = new Tuple<double, double>(source.PixelHeight*ratio, source.PixelWidth*ratio); }
Signed in members can post, follow updates, and more. New here? Register a free account.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.