override void OnApplyTemplate() { base.OnApplyTemplate(); if (!_isLoaded) { _isLoaded = true; if (CompatUtility.IsDesignMode && (Layers == null || !Layers.Any())) { if (_legendTree.LayerItems == null) { // Create a basic hierarchy for design : Map Layer -> SubLayer -> LegendItemViewModel var legendItem1 = new LegendItemViewModel { Label = "LegendItem1", Symbol = new SimpleMarkerSymbol { Style = SimpleMarkerStyle.Circle, Color = Colors.Red } }; var legendItem2 = new LegendItemViewModel { Label = "LegendItem2", Symbol = new SimpleMarkerSymbol { Style = SimpleMarkerStyle.Diamond, Color = Colors.Green } }; var layerItem = new LayerItemViewModel { Label = "LayerItem", LegendItems = new ObservableCollection <LegendItemViewModel> { legendItem1, legendItem2 } }; var mapLayerItem = new LayerItemViewModel { Label = "MapLayerItem", LayerType = MapLayerItem.MapLayerType, LayerItems = new ObservableCollection <LayerItemViewModel> { layerItem }, }; _legendTree.LayerItems = new ObservableCollection <LayerItemViewModel> { mapLayerItem }; } } else { // Initialize the Map now that all parameters are well known _legendTree.Layers = Layers; } } }
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { object name = null; LayerItemViewModel layerModel = value as LayerItemViewModel; if (layerModel != null) { if (layerModel.Layer != null && MapContentsControlHelper.IsTopMostLayerType(layerModel.LayerType)) { string layerName = layerModel.Layer.GetValue(MapApplication.LayerNameProperty) as string; if (string.IsNullOrWhiteSpace(layerName)) { layerName = layerModel.Label; if (string.IsNullOrWhiteSpace(layerName)) { layerName = layerModel.Layer.ID; } } name = layerName; } else { name = layerModel.Label; } } else { LegendItemViewModel legendModel = value as LegendItemViewModel; if (legendModel != null) { name = legendModel.Label; } } return(name); }
private void CorrectRendererNodes(LegendItemViewModel model) { LayerItemViewModel mod = model as LayerItemViewModel; if (mod != null) { if (MapContentsControlHelper.IsTopMostLayerType(mod.LayerType)) { GraphicsLayer lay = mod.Layer as GraphicsLayer; if (lay == null) { return; } ClassBreaksRenderer classBreaksrenderer = lay.Renderer as ClassBreaksRenderer; if (classBreaksrenderer != null) { if (mod.LegendItems != null && mod.LegendItems.Count > 0 && string.IsNullOrWhiteSpace(mod.LegendItems[0].Label)) { mod.LegendItems[0].Label = Resources.Strings.DefaultLegentItemViewModelLabel; } } else { UniqueValueRenderer uniqueRenderer = lay.Renderer as UniqueValueRenderer; if (uniqueRenderer != null && string.IsNullOrWhiteSpace(uniqueRenderer.DefaultLabel)) { uniqueRenderer.DefaultLabel = Resources.Strings.DefaultLegentItemViewModelLabel; } } //TODO: //TODO: This code adds a new node for the renderer attribute field, but currently there is no //TODO: way for us to set a different template as LayerItemViewModel.Template is read-only. //TODO //string attribute = null; //ClassBreaksRenderer classBreaksrenderer = lay.Renderer as ClassBreaksRenderer; //if (classBreaksrenderer != null) //{ // attribute = classBreaksrenderer.Attribute; //} //else //{ // UniqueValueRenderer uniqueRenderer = lay.Renderer as UniqueValueRenderer; // if (uniqueRenderer != null) // attribute = uniqueRenderer.Attribute; //} //if (renModel.LegendItems != null && renModel.LegendItems.Count > 0) //{ // if (string.IsNullOrWhiteSpace(renModel.LegendItems[0].Label)) // renModel.LegendItems[0].Label = Resources.Strings.DefaultLegentItemViewModelLabel; //} //if (string.IsNullOrWhiteSpace(attribute)) // return; //LayerItemViewModel renModel = new LayerItemViewModel(mod.Layer); //renModel.Label = attribute; //renModel.LayerItems = mod.LayerItems; //renModel.LegendItems = mod.LegendItems; //renModel.Tag = AssociatedObject.DataContext; //renModel.LayerType = "Renderer Layer"; //mod.LayerItems = null; //mod.LegendItems = null; //mod.LayerItems = new System.Collections.ObjectModel.ObservableCollection<LayerItemViewModel>(); //mod.LayerItems.Add(renModel); } } }
private void CorrectLegendImages(LegendItemViewModel model) { LayerItemViewModel mod = model as LayerItemViewModel; if (mod != null) { MapContentsConfiguration config = AssociatedObject.DataContext as MapContentsConfiguration; if (config.Mode == Mode.LayerList) { if (mod.LegendItems != null) { mod.LegendItems.Clear(); } } bool isBaseMap = false; if (mod.Layer != null) { isBaseMap = (bool)mod.Layer.GetValue(ESRI.ArcGIS.Client.WebMap.Document.IsBaseMapProperty); } if (isBaseMap || config.Mode == Mode.TopLevelLayersOnly) { if (mod.LegendItems != null) { mod.LegendItems.Clear(); } if (mod.LayerItems != null) { mod.LayerItems.Clear(); } //only show map layer level return; } if (mod.Tag == null)//first time only { mod.Tag = config; if (mod.Layer != null) { mod.IsExpanded = config.ExpandLayersOnAdd; } if (mod.LegendItems != null) { foreach (LegendItemViewModel leg in mod.LegendItems) { leg.Tag = config; } } } } if (model.LayerItemsSource != null) { foreach (LegendItemViewModel subModel in model.LayerItemsSource) { CorrectLegendImages(subModel); } } }