public override void OnApplyTemplate()
#endif
        {
            base.OnApplyTemplate();

            _measureLengthButton = GetTemplateChild("MeasureLength") as ToggleButton;
            if (_measureLengthButton != null)
            {
                _measureLengthButton.Click += OnToggleMeasureMode;
            }

            _measureAreaButton = GetTemplateChild("MeasureArea") as ToggleButton;
            if (_measureAreaButton != null)
            {
                _measureAreaButton.Click += OnToggleMeasureMode;
            }

            _measureFeatureButton = GetTemplateChild("MeasureFeature") as ToggleButton;
            if (_measureFeatureButton != null)
            {
                _measureFeatureButton.Click += OnToggleMeasureMode;
            }

            _clearButton = GetTemplateChild("Clear") as ButtonBase;
            if (_clearButton != null)
            {
                _measureFeatureResultOverlay.Graphics.CollectionChanged += (s, e) =>
                {
                    if (Mode == MeasureToolbarMode.Feature)
                    {
                        _clearButton.IsEnabled = _measureFeatureResultOverlay.Graphics.Any();
                        AddMeasureFeatureResultOverlay(MapView);
                    }
                };
                _clearButton.Click += OnClear;
            }

            _measureResultTextBlock = GetTemplateChild("MeasureResult") as TextBlock;
            _linearUnitsSelector    = GetTemplateChild("LinearUnitsSelector") as UIElement;
            _areaUnitsSelector      = GetTemplateChild("AreaUnitsSelector") as UIElement;

            // Base default unit selection on the culture the app is running under
            var useMetric = !"en-us".Equals(Language.ToString(), StringComparison.OrdinalIgnoreCase);

            if (SelectedLinearUnit == null)
            {
                if (useMetric)
                {
                    SelectedLinearUnit = LinearUnits.Any(u => u == Geometry.LinearUnits.Meters) ?
                                         Geometry.LinearUnits.Meters :
                                         LinearUnits.FirstOrDefault();
                }
                else
                {
                    SelectedLinearUnit = LinearUnits.Any(u => u == Geometry.LinearUnits.Feet) ?
                                         Geometry.LinearUnits.Feet :
                                         LinearUnits.FirstOrDefault();
                }
            }

            if (SelectedAreaUnit == null)
            {
                if (useMetric)
                {
                    SelectedAreaUnit = AreaUnits.Any(u => u == Geometry.AreaUnits.SquareKilometers) ?
                                       Geometry.AreaUnits.SquareKilometers :
                                       AreaUnits.FirstOrDefault();
                }
                else
                {
                    SelectedAreaUnit = AreaUnits.Any(u => u == Geometry.AreaUnits.SquareMiles) ?
                                       Geometry.AreaUnits.SquareMiles :
                                       AreaUnits.FirstOrDefault();
                }
            }
            PrepareMeasureMode();
        }
Ejemplo n.º 2
0
        public override void OnApplyTemplate()
#endif
        {
            base.OnApplyTemplate();

            _measureLengthButton = GetTemplateChild("MeasureLength") as ToggleButton;
            if (_measureLengthButton != null)
            {
                _measureLengthButton.Click += OnToggleMeasureMode;
            }

            _measureAreaButton = GetTemplateChild("MeasureArea") as ToggleButton;
            if (_measureAreaButton != null)
            {
                _measureAreaButton.Click += OnToggleMeasureMode;
            }

            _measureFeatureButton = GetTemplateChild("MeasureFeature") as ToggleButton;
            if (_measureFeatureButton != null)
            {
                _measureFeatureButton.Click += OnToggleMeasureMode;
            }

            _clearButton = GetTemplateChild("Clear") as ButtonBase;
            if (_clearButton != null)
            {
                _measureFeatureResultOverlay.Graphics.CollectionChanged += (s, e) =>
                {
                    if (Mode == MeasureToolbarMode.Feature)
                    {
                        _clearButton.IsEnabled = _measureFeatureResultOverlay.Graphics.Any();
                        AddMeasureFeatureResultOverlay(MapView);
                    }
                };
                _clearButton.Click += OnClear;
            }

            _measureResultTextBlock = GetTemplateChild("MeasureResult") as TextBlock;
            _linearUnitsSelector    = GetTemplateChild("LinearUnitsSelector") as UIElement;
            _areaUnitsSelector      = GetTemplateChild("AreaUnitsSelector") as UIElement;
            if (LinearUnits == null || !LinearUnits.Any())
            {
                LinearUnits = new LinearUnit[]
                {
                    Geometry.LinearUnits.Centimeters,
                    Geometry.LinearUnits.Feet,
                    Geometry.LinearUnits.Inches,
                    Geometry.LinearUnits.Kilometers,
                    Geometry.LinearUnits.Meters,
                    Geometry.LinearUnits.Miles,
                    Geometry.LinearUnits.Millimeters,
                    Geometry.LinearUnits.NauticalMiles,
                    Geometry.LinearUnits.Yards
                };
            }

            if (SelectedLinearUnit == null)
            {
                SelectedLinearUnit = LinearUnits.Any(u => u == Geometry.LinearUnits.Meters) ?
                                     Geometry.LinearUnits.Meters :
                                     LinearUnits.FirstOrDefault();
            }

            if (AreaUnits == null || !AreaUnits.Any())
            {
                AreaUnits = new AreaUnit[]
                {
                    Geometry.AreaUnits.Acres,
                    Geometry.AreaUnits.Hectares,
                    Geometry.AreaUnits.SquareCentimeters,
                    Geometry.AreaUnits.SquareDecimeters,
                    Geometry.AreaUnits.SquareFeet,
                    Geometry.AreaUnits.SquareKilometers,
                    Geometry.AreaUnits.SquareMeters,
                    Geometry.AreaUnits.SquareMiles,
                    Geometry.AreaUnits.SquareMillimeters,
                    Geometry.AreaUnits.SquareYards
                };
            }

            if (SelectedAreaUnit == null)
            {
                SelectedAreaUnit = AreaUnits.Any(u => u == Geometry.AreaUnits.SquareMiles) ?
                                   Geometry.AreaUnits.SquareMiles :
                                   AreaUnits.FirstOrDefault();
            }

            if (LineSketchEditor == null)
            {
                LineSketchEditor = new SketchEditor();
            }

            if (AreaSketchEditor == null)
            {
                AreaSketchEditor = new SketchEditor();
            }

            if (SelectionLineSymbol == null)
            {
                SelectionLineSymbol = LineSketchEditor?.Style?.LineSymbol;
            }

            if (SelectionFillSymbol == null)
            {
                SelectionFillSymbol = AreaSketchEditor?.Style?.FillSymbol;
            }

            Mode = MeasureToolbarMode.None;
            PrepareMeasureMode();
        }