private void Refresh() { if (_listView == null) { return; } if ((GeoView as MapView)?.Map == null && (GeoView as SceneView)?.Scene == null) { _listView.Adapter = null; return; } ObservableLayerContentList layers = null; if (GeoView is MapView) { layers = new ObservableLayerContentList(GeoView as MapView, ShowLegendInternal) { ReverseOrder = !ReverseLayerOrder, }; } else if (GeoView is SceneView) { layers = new ObservableLayerContentList(GeoView as SceneView, ShowLegendInternal) { ReverseOrder = !ReverseLayerOrder, }; } if (layers == null) { _listView.Adapter = null; return; } foreach (var l in layers) { if (!(l.LayerContent is Layer)) { continue; } var layer = l.LayerContent as Layer; if (layer.LoadStatus == LoadStatus.Loaded) { l.UpdateLayerViewState(GeoView.GetLayerViewState(layer)); } } ScaleChanged(); SetLayerContentList(layers); _listView.Adapter = new LegendAdapter(Context, layers); _listView.SetHeightBasedOnChildren(); }
/// <summary> /// Generates layer list for a set of <see cref="Layer"/>s in a <see cref="Map"/> or <see cref="Scene"/> /// contained in a <see cref="GeoView"/> /// </summary> internal void Refresh() { var list = GetTemplateChild("List") as ItemsControl; if (list == null) { return; } #if !NETFX_CORE ContextMenuService.AddContextMenuOpeningHandler(list, ContextMenuEventHandler); #endif if ((GeoView as MapView)?.Map == null && (GeoView as SceneView)?.Scene == null) { list.ItemsSource = null; return; } ObservableLayerContentList layers = null; if (GeoView is MapView) { layers = new ObservableLayerContentList(GeoView as MapView, ShowLegendInternal) { ReverseOrder = !ReverseLayerOrder, }; Binding b = new Binding(); b.Source = GeoView; b.Path = new PropertyPath(nameof(MapView.Map)); b.Mode = BindingMode.OneWay; SetBinding(DocumentProperty, b); } else if (GeoView is SceneView) { layers = new ObservableLayerContentList(GeoView as SceneView, ShowLegendInternal) { ReverseOrder = !ReverseLayerOrder, }; Binding b = new Binding(); b.Source = GeoView; b.Path = new PropertyPath(nameof(SceneView.Scene)); b.Mode = BindingMode.OneWay; SetBinding(DocumentProperty, b); } if (layers == null) { list.ItemsSource = null; return; } foreach (var l in layers) { if (!(l.LayerContent is Layer)) { continue; } var layer = l.LayerContent as Layer; if (layer.LoadStatus == LoadStatus.Loaded) { l.UpdateLayerViewState(GeoView.GetLayerViewState(layer)); } } ScaleChanged(); SetLayerContentList(layers); list.ItemsSource = layers; }
private void RebuildList() { var list = GetTemplateChild("List") as ItemsControl; if (list != null) { if (GeoView != null) { ObservableLayerContentList layers = null; if (GeoView is MapView) { var map = (GeoView as MapView).Map; if (map != null) { layers = new ObservableLayerContentList(GeoView as MapView, ShowLegend) { ReverseOrder = true }; } System.Windows.Data.Binding b = new System.Windows.Data.Binding(); b.Source = GeoView; b.Path = new PropertyPath(nameof(MapView.Map)); b.Mode = System.Windows.Data.BindingMode.OneWay; SetBinding(DocumentProperty, b); } else if (GeoView is SceneView) { var scene = (GeoView as SceneView).Scene; if (scene != null) { layers = new ObservableLayerContentList(GeoView as SceneView, ShowLegend) { ReverseOrder = true } } ; System.Windows.Data.Binding b = new System.Windows.Data.Binding(); b.Source = GeoView; b.Path = new PropertyPath(nameof(SceneView.Scene)); b.Mode = System.Windows.Data.BindingMode.OneWay; SetBinding(DocumentProperty, b); } if (layers != null && GeoView != null) { foreach (var l in layers) { var layer = l.LayerContent as Layer; if (layer.LoadStatus == LoadStatus.Loaded) { l.UpdateLayerViewState(GeoView.GetLayerViewState(layer)); } } _scaleChanged = true; UpdateScaleVisiblity(); } list.ItemsSource = layerContentList = layers; } else { list.ItemsSource = null; } } }
private void Refresh() { if (_listView == null) { return; } if ((GeoView as MapView)?.Map == null && (GeoView as SceneView)?.Scene == null) { _listView.Source = null; _listView.ReloadData(); InvalidateIntrinsicContentSize(); return; } ObservableLayerContentList layers = null; if (GeoView is MapView) { layers = new ObservableLayerContentList(GeoView as MapView, ShowLegendInternal) { ReverseOrder = !ReverseLayerOrder, }; } else if (GeoView is SceneView) { layers = new ObservableLayerContentList(GeoView as SceneView, ShowLegendInternal) { ReverseOrder = !ReverseLayerOrder, }; } if (layers == null) { _listView.Source = null; return; } foreach (var l in layers) { if (!(l.LayerContent is Layer)) { continue; } var layer = l.LayerContent as Layer; if (layer.LoadStatus == LoadStatus.Loaded) { l.UpdateLayerViewState(GeoView.GetLayerViewState(layer)); } } ScaleChanged(); SetLayerContentList(layers); var source = new LegendTableSource(layers); _listView.Source = source; source.CollectionChanged += (a, b) => InvokeOnMainThread(() => { _listView.ReloadData(); InvalidateIntrinsicContentSize(); }); _listView.ReloadData(); InvalidateIntrinsicContentSize(); Hidden = false; }