private async void StartDraw()
        {
            if (!IsEnable && MapEditor == null && layer == null)
            {
                return;
            }
            GraphicsLayer drawLayer = layer; // Fix Bug, change layer during drawing
            DrawOptionVm  optionVm  = null;

            foreach (var opt in drawOptions)
            {
                if (opt.IsChecked)
                {
                    optionVm = opt;
                    break;
                }
            }

            if (optionVm != null)
            {
                try
                {
                    var progress = new Progress <GeometryEditStatus>();

                    var result = await MapEditor.RequestShapeAsync(optionVm.Shape, null, progress);

                    var graphic = new Graphic
                    {
                        Geometry = result,
                        Symbol   = optionVm.Symbol
                    };
                    foreach (var item in optionVm.Attributes)
                    {
                        graphic.Attributes.Add(item.Key, item.Value);
                    }
                    drawLayer.Graphics.Add(graphic);
                }
                catch (TaskCanceledException)
                {
                }
                catch (Exception ex)
                {
                    Reset();
                    MessageBox.Show(ex.Message);
                }
            }
        }
        public DrawOptionsGroupVm()
        {
            var polylineSymbol = new SimpleLineSymbol
            {
                Color = Colors.Red,
                Width = 2
            };

            DrawPolyLine = new DrawOptionVm(DrawShape.Polyline, polylineSymbol);
            var contourSymbol = new SimpleLineSymbol
            {
                Color = Colors.Purple,
                Width = 2
            };

            DrawContour = new DrawOptionVm(DrawShape.Polyline, contourSymbol);
            DrawPolyLine.Attributes.Add(Diamond14Attributes.LineType, Diamond14Attributes.LineTypeLine);
            DrawContour.Attributes.Add(Diamond14Attributes.LineType, Diamond14Attributes.LineTypeContour);

            var polygonSymbol = new SimpleFillSymbol
            {
                Color = Color.FromArgb(0x66, 0xff, 0, 0)
            };

            DrawPolygon = new DrawOptionVm(DrawShape.Polygon, polygonSymbol);

            var pointSymbol = new SimpleMarkerSymbol
            {
                Style = SimpleMarkerStyle.Circle
            };

            DrawPoint = new DrawOptionVm(DrawShape.Point, pointSymbol);

            drawOptions.Add(DrawPoint);
            drawOptions.Add(DrawPolygon);
            drawOptions.Add(DrawPolyLine);
            drawOptions.Add(DrawContour);

            StartDrawCommand     = new DelegateCommand(StartDraw);
            StartEditCommand     = new DelegateCommand(StartEdit);
            DeleteGraphicCommand = new DelegateCommand(DeleteGraphic);
            UpdateValueCommand   = new DelegateCommand(UpdateValue);
            //IsEnabledChangedCommand = new DelegateCommand<bool?>(IsEnabledChanged);
            //CompleteCommand = new DelegateCommand(Complete, CanComplete);
            //CancelCommand = new DelegateCommand(Cancel, CanCancel);
        }