private void bindToGraphicsLayer(GraphicsLayer graphicsLayer) { object fields = graphicsLayer.GetValue(LayerExtensions.FieldsProperty); if (fields is IEnumerable <FieldInfo> ) { string displayField = LayerExtensions.GetDisplayField(graphicsLayer); if (string.IsNullOrEmpty(displayField)) { displayField = FieldInfo.GetDefaultDisplayField(fields as IEnumerable <FieldInfo>); if (!string.IsNullOrEmpty(displayField)) { LayerExtensions.SetDisplayField(graphicsLayer, displayField); } } #region Set data context MapTipsConfigInfo info = new MapTipsConfigInfo() { LayerSelectionVisibility = false, PopUpsOnClick = LayerExtensions.GetPopUpsOnClick(graphicsLayer), IsPopupEnabled = ESRI.ArcGIS.Client.Extensibility.LayerProperties.GetIsPopupEnabled(graphicsLayer), Layer = graphicsLayer, }; setFromWebMap(info); info.SupportsOnClick = true; info.Layers = new Collection <LayerInformation>(); LayerInformation item = new LayerInformation(); item.PopUpsEnabled = true; item.ID = 0; item.Name = LayerExtensions.GetTitle(Layer); item.DisplayField = displayField; item.Fields = fields as Collection <FieldInfo>; if (graphicsLayer is FeatureLayer) { foreach (FieldInfo field in item.Fields) { if (field.DomainSubtypeLookup == DomainSubtypeLookup.NotDefined) { field.DomainSubtypeLookup = FieldInfo.GetDomainSubTypeLookup(graphicsLayer, field); } } } info.Layers.Add(item); info.SelectedItem = item; info.PropertyChanged += info_PropertyChanged; this.DataContext = info; #endregion } }
private void setFromWebMap(MapTipsConfigInfo info) { IDictionary <int, string> webMapTemplates = LayerExtensions.GetWebMapPopupDataTemplates(Layer); if (webMapTemplates != null && webMapTemplates.Count > 0) { info.FromWebMap = LayerExtensions.GetUsePopupFromWebMap(Layer); info.WebMapPopupVisibility = System.Windows.Visibility.Visible; } else { info.FromWebMap = false; info.WebMapPopupVisibility = System.Windows.Visibility.Collapsed; } }
void setMapServiceLayerDataContext(Collection <LayerInformation> layerInfos) { if (layerInfos.Count > 0) { #region Set data context MapTipsConfigInfo info = new MapTipsConfigInfo() { LayerSelectionVisibility = true, SupportsOnClick = true, Layer = Layer, }; setFromWebMap(info); info.IsPopupEnabled = ESRI.ArcGIS.Client.Extensibility.LayerProperties.GetIsPopupEnabled(Layer); info.Layers = layerInfos; info.SelectedItem = layerInfos[0]; this.DataContext = info; info.PropertyChanged += info_PropertyChanged; #endregion } }
void info_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) { if (e.PropertyName == "PopUpsEnabled") { MapTipsConfigInfo info = sender as MapTipsConfigInfo; Collection <int> layerIds = new Collection <int>(); if (info != null && info.Layers != null) { foreach (LayerInformation layer in info.Layers) { if (layer.PopUpsEnabled) { layerIds.Add(layer.ID); } } if (Layer != null) { if (layerIds.Count < 1) { Layer.ClearValue(LayerExtensions.IdentifyLayerIdsProperty); } else { LayerExtensions.SetIdentifyLayerIds(Layer, layerIds); } } onPropertyChanged("IdentifyLayerIds"); } mapTipsLayerConfig.BindUI(); } else if (e.PropertyName == "PopUpsOnClick") { MapTipsConfigInfo info = sender as MapTipsConfigInfo; GraphicsLayer layer = Layer as GraphicsLayer; if (info != null && layer != null) { if (!(info.PopUpsOnClick.Value)) { LayerExtensions.SetPopUpsOnClick(layer, false); } else { LayerExtensions.SetPopUpsOnClick(layer, true); #region if no display field, set to default if (info.Layers != null && info.Layers.Count == 1 && info.Layers[0] != null) { if (string.IsNullOrEmpty(info.Layers[0].DisplayField) || info.Layers[0].DisplayField == ESRI.ArcGIS.Mapping.Core.LocalizableStrings.NoneInAngleBraces) { info.Layers[0].DisplayField = FieldInfo.GetDefaultDisplayField(info.Layers[0].Fields as IEnumerable <FieldInfo>); if (!string.IsNullOrEmpty(info.Layers[0].DisplayField)) { LayerExtensions.SetDisplayField(layer, info.Layers[0].DisplayField); } } } #endregion } LayerExtensions.SetIsMapTipDirty(layer, true); mapTipsLayerConfig.BindUI(); onPropertyChanged("PopUpsOnClick"); } } else if (e.PropertyName == "FromWebMap") { MapTipsConfigInfo info = sender as MapTipsConfigInfo; if (info != null) { LayerExtensions.SetUsePopupFromWebMap(Layer, info.FromWebMap); if (Layer is GraphicsLayer) { LayerExtensions.SetIsMapTipDirty(Layer as GraphicsLayer, true); } onPropertyChanged("FromWebMap"); } } else if (e.PropertyName == "IsPopupEnabled") { MapTipsConfigInfo info = sender as MapTipsConfigInfo; ESRI.ArcGIS.Client.Extensibility.LayerProperties.SetIsPopupEnabled(Layer, info.IsPopupEnabled); if (Layer is GraphicsLayer) { LayerExtensions.SetIsMapTipDirty(Layer as GraphicsLayer, true); } onPropertyChanged("IsPopupEnabled"); } if (!(Layer is GraphicsLayer)) { onPropertyChanged("LayerInfos"); } }
private void bindToGraphicsLayer(GraphicsLayer graphicsLayer) { object fields = graphicsLayer.GetValue(LayerExtensions.FieldsProperty); if (fields is IEnumerable<FieldInfo>) { string displayField = LayerExtensions.GetDisplayField(graphicsLayer); if (string.IsNullOrEmpty(displayField)) { displayField = FieldInfo.GetDefaultDisplayField(fields as IEnumerable<FieldInfo>); if (!string.IsNullOrEmpty(displayField)) LayerExtensions.SetDisplayField(graphicsLayer, displayField); } #region Set data context MapTipsConfigInfo info = new MapTipsConfigInfo() { LayerSelectionVisibility = false, PopUpsOnClick = LayerExtensions.GetPopUpsOnClick(graphicsLayer), IsPopupEnabled = ESRI.ArcGIS.Client.Extensibility.LayerProperties.GetIsPopupEnabled(graphicsLayer), Layer = graphicsLayer, }; setFromWebMap(info); info.SupportsOnClick = true; info.Layers = new Collection<LayerInformation>(); LayerInformation item = new LayerInformation(); item.PopUpsEnabled = true; item.ID = 0; item.Name = LayerExtensions.GetTitle(Layer); item.DisplayField = displayField; item.Fields = fields as Collection<FieldInfo>; if (graphicsLayer is FeatureLayer) { foreach (FieldInfo field in item.Fields) { if (field.DomainSubtypeLookup == DomainSubtypeLookup.NotDefined) field.DomainSubtypeLookup = FieldInfo.GetDomainSubTypeLookup(graphicsLayer, field); } } info.Layers.Add(item); info.SelectedItem = item; info.PropertyChanged += info_PropertyChanged; this.DataContext = info; #endregion } }
private void setFromWebMap(MapTipsConfigInfo info) { IDictionary<int, string> webMapTemplates = LayerExtensions.GetWebMapPopupDataTemplates(Layer); if (webMapTemplates != null && webMapTemplates.Count > 0) { info.FromWebMap = LayerExtensions.GetUsePopupFromWebMap(Layer); info.WebMapPopupVisibility = System.Windows.Visibility.Visible; } else { info.FromWebMap = false; info.WebMapPopupVisibility = System.Windows.Visibility.Collapsed; } }
void setMapServiceLayerDataContext(Collection<LayerInformation> layerInfos) { if (layerInfos.Count > 0) { #region Set data context MapTipsConfigInfo info = new MapTipsConfigInfo() { LayerSelectionVisibility = true, SupportsOnClick = true, Layer = Layer, }; setFromWebMap(info); info.IsPopupEnabled = ESRI.ArcGIS.Client.Extensibility.LayerProperties.GetIsPopupEnabled(Layer); info.Layers = layerInfos; info.SelectedItem = layerInfos[0]; this.DataContext = info; info.PropertyChanged += info_PropertyChanged; #endregion } }