Example #1
0
        private void AddSymbol(Symbology.Symbol symbol)
        {
            int columnCount = SymbolGrid.ColumnDefinitions.Count;
            var sd          = new UI.Controls.SymbolDisplay()
            {
                Symbol = symbol
            };
            var f = new Border()
            {
                HorizontalAlignment = Windows.UI.Xaml.HorizontalAlignment.Center,
                VerticalAlignment   = Windows.UI.Xaml.VerticalAlignment.Center,
                BorderBrush         = new SolidColorBrush(Colors.Black),
                BorderThickness     = new Thickness(1),
                Padding             = new Thickness(0)
            };

            f.Child = sd;
            int count  = SymbolGrid.Children.Count;
            var row    = count / columnCount;
            var column = count % columnCount;

            if (column == 0)
            {
                SymbolGrid.RowDefinitions.Add(new RowDefinition());
            }
            Grid.SetRow(f, row);
            Grid.SetColumn(f, column);
            SymbolGrid.Children.Add(f);
        }
 internal void SetSymbol(Symbology.Symbol symbol)
 {
     if (symbol != null)
     {
         // force the geometry type since GeometryType.Unknown doesn't work well with advanced symbology.
         var geometryType = GeometryType.Unknown;
         var gdbFeatureTable = Layer == null ? null : Layer.FeatureTable as GeodatabaseFeatureTable;
         if (gdbFeatureTable != null && gdbFeatureTable.ServiceInfo != null)
             geometryType = gdbFeatureTable.ServiceInfo.GeometryType;
         GeometryType = geometryType;
     }
     Symbol = symbol;
     OnPropertyChanged("GeometryType");
     OnPropertyChanged("Symbol");
 }
        public LayerContentViewModel(ILayerContent layerContent, WeakReference <GeoView> view, Symbology.Symbol symbol = null, bool generateLegend = true)
        {
            _context        = SynchronizationContext.Current ?? new SynchronizationContext();
            LayerContent    = layerContent;
            _view           = view;
            Symbol          = symbol;
            _generateLegend = generateLegend;
            if (LayerContent is INotifyPropertyChanged)
            {
                (LayerContent as INotifyPropertyChanged).PropertyChanged += LayerContentViewModel_PropertyChanged;
            }

            if (LayerContent.SublayerContents is INotifyCollectionChanged)
            {
                var incc     = LayerContent.SublayerContents as INotifyCollectionChanged;
                var listener = new Internal.WeakEventListener <INotifyCollectionChanged, object, NotifyCollectionChangedEventArgs>(incc);
                listener.OnEventAction  = (instance, source, eventArgs) => { LayerContentViewModel_CollectionChanged(source, eventArgs); };
                listener.OnDetachAction = (instance, weakEventListener) => instance.CollectionChanged -= weakEventListener.OnEvent;
                incc.CollectionChanged += listener.OnEvent;
            }

            if (layerContent is Esri.ArcGISRuntime.ILoadable)
            {
                var l = layerContent as Esri.ArcGISRuntime.ILoadable;
                UpdateLoadingStatus();
            }

            if (LayerContent is Layer)
            {
                Layer   layer = LayerContent as Layer;
                GeoView gview;
                if (layer.LoadStatus != LoadStatus.NotLoaded && _view.TryGetTarget(out gview))
                {
                    try
                    {
                        var viewState = gview.GetLayerViewState(layer);
                        UpdateLayerViewState(viewState);
                    }
                    catch (ArgumentException)
                    {
                    }
                }
                else
                {
                    UpdateLayerViewState(null);
                }
            }
        }
            internal async void SetSwatch(Symbology.Symbol symbol)
            {
                if (symbol != null)
                {
                    // force the geometry type since GeometryType.Unknown doesn't work well with advanced symbology.
                    Geometry.GeometryType geometryType = Geometry.GeometryType.Unknown;
                    if (Layer != null && Layer.FeatureTable != null && Layer.FeatureTable.ServiceInfo != null)
                    {
                        geometryType = Layer.FeatureTable.ServiceInfo.GeometryType;
                    }

                    try
                    {
                        Swatch = await symbol.CreateSwatchAsync(32, 32, 96, Colors.Transparent, geometryType);

                        OnPropertyChanged("Swatch");
                    }
                    catch { }
                }
            }
 public DesignLegendInfo(string name, Symbology.Symbol symbol)
 {
     Name   = name;
     Symbol = symbol;
 }
        public LayerContentViewModel(ILayerContent layerContent, WeakReference <GeoView> view, Symbology.Symbol symbol = null, bool generateLegend = true)
        {
            _context        = SynchronizationContext.Current ?? new SynchronizationContext();
            LayerContent    = layerContent;
            _view           = view;
            Symbol          = symbol;
            _generateLegend = generateLegend;
            if (LayerContent is INotifyPropertyChanged)
            {
                (LayerContent as INotifyPropertyChanged).PropertyChanged += LayerContentViewModel_PropertyChanged;
            }

            if (LayerContent.SublayerContents is INotifyCollectionChanged)
            {
                var incc     = LayerContent.SublayerContents as INotifyCollectionChanged;
                var listener = new Internal.WeakEventListener <INotifyCollectionChanged, object, NotifyCollectionChangedEventArgs>(incc);
                listener.OnEventAction  = (instance, source, eventArgs) => { LayerContentViewModel_CollectionChanged(source, eventArgs); };
                listener.OnDetachAction = (instance, weakEventListener) => instance.CollectionChanged -= weakEventListener.OnEvent;
                incc.CollectionChanged += listener.OnEvent;
            }

            if (layerContent is Esri.ArcGISRuntime.ILoadable)
            {
                var l = layerContent as Esri.ArcGISRuntime.ILoadable;
                ReloadCommand = _reloadCommand = new DelegateCommand(
                    (s) =>
                {
                    l.RetryLoadAsync();
                    UpdateLoadingStatus();
                },
                    (s) =>
                {
                    return(l.LoadStatus == Esri.ArcGISRuntime.LoadStatus.FailedToLoad);
                });
                UpdateLoadingStatus();
            }
            else
            {
                ReloadCommand = _reloadCommand = new DelegateCommand((s) => { }, (s) => { return(false); });
            }

            if (LayerContent is Layer)
            {
                Layer   layer = LayerContent as Layer;
                GeoView gview;
                if (layer.LoadStatus != LoadStatus.NotLoaded && _view.TryGetTarget(out gview))
                {
                    try
                    {
                        var viewState = gview.GetLayerViewState(layer);
                        UpdateLayerViewState(viewState);
                    }
                    catch (ArgumentException)
                    {
                    }
                }
                else
                {
                    UpdateLayerViewState(null);
                }
            }

            ZoomToCommand = _zoomToCommand = new DelegateCommand(
                (s) =>
            {
                GeoView gview;
                bool hasView = _view.TryGetTarget(out gview);
                if (hasView)
                {
                    var vp = GetExtent();
                    if (vp != null)
                    {
                        gview.SetViewpointAsync(vp);
                    }
                }
            }, (s) =>
            {
                GeoView gview;
                return(_view.TryGetTarget(out gview) && GetExtent() != null);
            });
        }