Skip to content

EditInteractiveOverlay

Namespace: ThinkGeo.UI.Maui

This class inherits from InteractiveOverlay abstract class. This specified overlay describe the EditShape interactive process with MapControl using Mouse or Keyboard.

public class EditInteractiveOverlay : InteractiveOverlay, System.ComponentModel.INotifyPropertyChanged, Microsoft.Maui.Controls.Internals.IDynamicResourceHandler, Microsoft.Maui.Controls.IElementDefinition, Microsoft.Maui.Controls.Internals.INameScope, Microsoft.Maui.Controls.IElementController, Microsoft.Maui.IVisualTreeElement, Microsoft.Maui.IElement, Microsoft.Maui.Controls.IEffectControlProvider, Microsoft.Maui.IToolTipElement, Microsoft.Maui.IContextFlyoutElement, Microsoft.Maui.Controls.IControlsElement, Microsoft.Maui.Controls.StyleSheets.IStyleSelectable, Microsoft.Maui.Controls.Internals.INavigationProxy, Microsoft.Maui.Controls.IAnimatable, Microsoft.Maui.Controls.IVisualElementController, Microsoft.Maui.Controls.IResourcesProvider, Microsoft.Maui.Controls.IStyleElement, Microsoft.Maui.Controls.IFlowDirectionController, Microsoft.Maui.Controls.IPropertyPropagationController, Microsoft.Maui.Controls.IVisualController, Microsoft.Maui.Controls.IWindowController, Microsoft.Maui.IView, Microsoft.Maui.ITransform, Microsoft.Maui.Controls.IControlsVisualElement, Microsoft.Maui.Controls.StyleSheets.IStylable, Microsoft.Maui.Controls.IViewController, Microsoft.Maui.Controls.Internals.IGestureController, Microsoft.Maui.Controls.IGestureRecognizers, Microsoft.Maui.IPropertyMapperView, Microsoft.Maui.HotReload.IHotReloadableView, Microsoft.Maui.IReplaceableView, Microsoft.Maui.Controls.IControlsView, Microsoft.Maui.ILayout, Microsoft.Maui.IContainer, System.Collections.Generic.IList`1[[Microsoft.Maui.IView, Microsoft.Maui, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Collections.Generic.ICollection`1[[Microsoft.Maui.IView, Microsoft.Maui, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Collections.Generic.IEnumerable`1[[Microsoft.Maui.IView, Microsoft.Maui, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Collections.IEnumerable, Microsoft.Maui.ISafeAreaView, Microsoft.Maui.IPadding, Microsoft.Maui.ICrossPlatformLayout, Microsoft.Maui.Controls.IBindableLayout, Microsoft.Maui.Controls.IPaddingElement, Microsoft.Maui.Controls.IInputTransparentContainerElement, Microsoft.Maui.IAbsoluteLayout, System.IDisposable

Inheritance Object → BindableObject → Element → NavigableElement → VisualElement → View → Layout → AbsoluteLayout → Overlay → GraphicsViewOverlay → InteractiveOverlay → EditInteractiveOverlay
Implements INotifyPropertyChanged, IDynamicResourceHandler, IElementDefinition, INameScope, IElementController, IVisualTreeElement, IElement, IEffectControlProvider, IToolTipElement, IContextFlyoutElement, IControlsElement, IStyleSelectable, INavigationProxy, IAnimatable, IVisualElementController, IResourcesProvider, IStyleElement, IFlowDirectionController, IPropertyPropagationController, IVisualController, IWindowController, IView, ITransform, IControlsVisualElement, IStylable, IViewController, IGestureController, IGestureRecognizers, IPropertyMapperView, IHotReloadableView, IReplaceableView, IControlsView, ILayout, IContainer, IList<IView>, ICollection<IView>, IEnumerable<IView>, IEnumerable, ISafeAreaView, IPadding, ICrossPlatformLayout, IBindableLayout, IPaddingElement, IInputTransparentContainerElement, IAbsoluteLayout, IDisposable

Properties

IsEmpty

This property override its property in base class by watching the feature count in editShapesLayer.

If it is empty ,we can skip drawing it for better performance.

public bool IsEmpty { get; }

Property Value

Boolean

TrackMode

Gets or sets a mode of TrackOverlay.

public TrackMode TrackMode { get; set; }

Property Value

TrackMode
A mode of TrackOverlay.

Remarks:

The default mode is TrackMode.None which means you cannot draw or edit features at client. By setting the mode to TrackMode.Point, TrackMode.Line, TrackMode.Polygon etc., you could add point, line or polygon to the FeatureOverlay. Setting the mode to TrackMode.Edit, you could edit the shapes at the client side.

EditShapesLayer

This property gets the InMemoryFeatureLayer which holds the edit shapes.

public InMemoryFeatureLayer EditShapesLayer { get; }

Property Value

InMemoryFeatureLayer

DragControlPointsLayer

This property gets the InMemoryFeatureLayer which holds the control points for drag.

public InMemoryFeatureLayer DragControlPointsLayer { get; }

Property Value

InMemoryFeatureLayer

Remarks:

Every control points for drag are not the existing vertex of the edit shapes.

RotateControlPointsLayer

This property gets the InMemoryFeatureLayer which holds the control points for rotate.

public InMemoryFeatureLayer RotateControlPointsLayer { get; }

Property Value

InMemoryFeatureLayer

Remarks:

Every control points for rotate are not the existing vertex of the edit shapes.

ResizeControlPointsLayer

This property gets the InMemoryFeatureLayer which holds the control points for resize.

public InMemoryFeatureLayer ResizeControlPointsLayer { get; }

Property Value

InMemoryFeatureLayer

Remarks:

Every control points for resize are not the existing vertex of the edit shapes.

ExistingControlPointsLayer

This property gets the InMemoryFeatureLayer which holds the control points which represents the existing vertices of the edit shapes.

public InMemoryFeatureLayer ExistingControlPointsLayer { get; }

Property Value

InMemoryFeatureLayer

Remarks:

Every control points in this layer are the existing vertices of the edit shapes.

SelectedControlPointLayer

This property gets the InMemoryFeatureLayer which holds the control points which represents the selected vertices of the edit shapes.

public InMemoryFeatureLayer SelectedControlPointLayer { get; }

Property Value

InMemoryFeatureLayer

Remarks:

Every control points in this layer are the selected vertices of the edit shapes.

CanDrag

Gets a value which indicates whether the shape can be dragged.

public bool CanDrag { get; set; }

Property Value

Boolean

CanReshape

Gets a value which indicates whether the shape can be reshaped.

public bool CanReshape { get; set; }

Property Value

Boolean

CanResize

Gets a value which indicates whether the shape can be resized.

public bool CanResize { get; set; }

Property Value

Boolean

CanRotate

Gets a value which indicates whether the shape can be rotated.

public bool CanRotate { get; set; }

Property Value

Boolean

CanAddVertex

Gets a value which indicates whether the shape can Add new vertex.

public bool CanAddVertex { get; set; }

Property Value

Boolean

CanRemoveVertex

Gets a value which indicates whether the shape can remove an existing vertex.

public bool CanRemoveVertex { get; set; }

Property Value

Boolean

Name

Gets or sets the name of this overlay.

public string Name { get; set; }

Property Value

String

DrawingExceptionMode

This property gets and sets the DrawingExceptionMode used when an exception occurs during drawing.

public DrawingExceptionMode DrawingExceptionMode { get; set; }

Property Value

DrawingExceptionMode
The drawing exception mode.

Children

public IList<IView> Children { get; }

Property Value

IList<IView>

Count

public int Count { get; }

Property Value

Int32

IsReadOnly

public bool IsReadOnly { get; }

Property Value

Boolean

Item

public IView Item { get; set; }

Property Value

IView

IsClippedToBounds

public bool IsClippedToBounds { get; set; }

Property Value

Boolean

Padding

public Thickness Padding { get; set; }

Property Value

Thickness

IgnoreSafeArea

public bool IgnoreSafeArea { get; set; }

Property Value

Boolean

CascadeInputTransparent

public bool CascadeInputTransparent { get; set; }

Property Value

Boolean

GestureRecognizers

public IList<IGestureRecognizer> GestureRecognizers { get; }

Property Value

IList<IGestureRecognizer>

HorizontalOptions

public LayoutOptions HorizontalOptions { get; set; }

Property Value

LayoutOptions

Margin

public Thickness Margin { get; set; }

Property Value

Thickness

VerticalOptions

public LayoutOptions VerticalOptions { get; set; }

Property Value

LayoutOptions

Visual

public IVisual Visual { get; set; }

Property Value

IVisual

FlowDirection

public FlowDirection FlowDirection { get; set; }

Property Value

FlowDirection

Window

public Window Window { get; }

Property Value

Window

AnchorX

public double AnchorX { get; set; }

Property Value

Double

AnchorY

public double AnchorY { get; set; }

Property Value

Double

BackgroundColor

public Color BackgroundColor { get; set; }

Property Value

Color

Background

public Brush Background { get; set; }

Property Value

Brush

Behaviors

public IList<Behavior> Behaviors { get; }

Property Value

IList<Behavior>

Bounds

public Rect Bounds { get; }

Property Value

Rect

Height

public double Height { get; }

Property Value

Double

HeightRequest

public double HeightRequest { get; set; }

Property Value

Double

InputTransparent

public bool InputTransparent { get; set; }

Property Value

Boolean

IsEnabled

public bool IsEnabled { get; set; }

Property Value

Boolean

IsFocused

public bool IsFocused { get; }

Property Value

Boolean

IsVisible

public bool IsVisible { get; set; }

Property Value

Boolean

MinimumHeightRequest

public double MinimumHeightRequest { get; set; }

Property Value

Double

MinimumWidthRequest

public double MinimumWidthRequest { get; set; }

Property Value

Double

MaximumHeightRequest

public double MaximumHeightRequest { get; set; }

Property Value

Double

MaximumWidthRequest

public double MaximumWidthRequest { get; set; }

Property Value

Double

Opacity

public double Opacity { get; set; }

Property Value

Double

Rotation

public double Rotation { get; set; }

Property Value

Double

RotationX

public double RotationX { get; set; }

Property Value

Double

RotationY

public double RotationY { get; set; }

Property Value

Double

Scale

public double Scale { get; set; }

Property Value

Double

ScaleX

public double ScaleX { get; set; }

Property Value

Double

ScaleY

public double ScaleY { get; set; }

Property Value

Double

TranslationX

public double TranslationX { get; set; }

Property Value

Double

TranslationY

public double TranslationY { get; set; }

Property Value

Double

Triggers

public IList<TriggerBase> Triggers { get; }

Property Value

IList<TriggerBase>

Width

public double Width { get; }

Property Value

Double

WidthRequest

public double WidthRequest { get; set; }

Property Value

Double

X

public double X { get; }

Property Value

Double

Y

public double Y { get; }

Property Value

Double

Clip

public Geometry Clip { get; set; }

Property Value

Geometry

Batched

public bool Batched { get; }

Property Value

Boolean

DisableLayout

public bool DisableLayout { get; set; }

Property Value

Boolean

IsInPlatformLayout

public bool IsInPlatformLayout { get; set; }

Property Value

Boolean

IsPlatformStateConsistent

public bool IsPlatformStateConsistent { get; set; }

Property Value

Boolean

IsPlatformEnabled

public bool IsPlatformEnabled { get; set; }

Property Value

Boolean

Resources

public ResourceDictionary Resources { get; set; }

Property Value

ResourceDictionary

Frame

public Rect Frame { get; set; }

Property Value

Rect

Handler

public IViewHandler Handler { get; set; }

Property Value

IViewHandler

Shadow

public Shadow Shadow { get; set; }

Property Value

Shadow

ZIndex

public int ZIndex { get; set; }

Property Value

Int32

DesiredSize

public Size DesiredSize { get; protected set; }

Property Value

Size

IsLoaded

public bool IsLoaded { get; }

Property Value

Boolean

public INavigation Navigation { get; internal set; }

Property Value

INavigation

Style

public Style Style { get; set; }

Property Value

Style

StyleClass

public IList<string> StyleClass { get; set; }

Property Value

IList<String>

class

public IList<string> class { get; set; }

Property Value

IList<String>

public NavigationProxy NavigationProxy { get; }

Property Value

NavigationProxy

AutomationId

public string AutomationId { get; set; }

Property Value

String

ClassId

public string ClassId { get; set; }

Property Value

String

Effects

public IList<Effect> Effects { get; }

Property Value

IList<Effect>

Id

public Guid Id { get; }

Property Value

Guid

StyleId

public string StyleId { get; set; }

Property Value

String

LogicalChildren

public ReadOnlyCollection<Element> LogicalChildren { get; }

Property Value

ReadOnlyCollection<Element>

RealParent

public Element RealParent { get; }

Property Value

Element

Parent

public Element Parent { get; set; }

Property Value

Element

EffectControlProvider

public IEffectControlProvider EffectControlProvider { get; set; }

Property Value

IEffectControlProvider

Handler

public IElementHandler Handler { get; set; }

Property Value

IElementHandler

Dispatcher

public IDispatcher Dispatcher { get; }

Property Value

IDispatcher

BindingContext

public object BindingContext { get; set; }

Property Value

Object

Constructors

EditInteractiveOverlay()

Default constructor of the class.

If you use thi constructor, please set the properties correctly, or it will use their default values.

public EditInteractiveOverlay()

Methods

OpenAsyncCore(IMapView, CancellationToken)

protected Task OpenAsyncCore(IMapView mapArguments, CancellationToken cancellationToken)

Parameters

mapArguments IMapView

cancellationToken CancellationToken

Returns

Task

DrawAsyncCore(OverlayRefreshType, CancellationToken)

This method draws the EditInteractiveOverlay.

protected Task DrawAsyncCore(OverlayRefreshType refreshType, CancellationToken cancellationToken)

Parameters

refreshType OverlayRefreshType
This parameter is current refreshType, could be pan or redraw.

cancellationToken CancellationToken
The token to monitor the cancellation requests.

Returns

Task
None

Remarks:

This method draws the representation of the overlay based on the extent you provided.

When implementing this abstract method, consider each feature and its column data values. You can use the full power of the GeoCanvas to do the drawing. If you need column data for a feature, be sure to override the GetRequiredColumnNamesCore and add the columns you need to the collection. In many of the styles, we add properties that allow the user to specify which field they need; then, in the GetRequiredColumnNamesCore, we read that property and add it to the collection.

TransformCore(RectangleShape, IMapView)

protected void TransformCore(RectangleShape extent, IMapView mapView)

Parameters

extent RectangleShape

mapView IMapView

SetSelectedControlPoint(PointShape, Double)

This protected method is to set the control point.

protected bool SetSelectedControlPoint(PointShape targetPointShape, double searchingTolerance)

Parameters

targetPointShape PointShape
This parameter is target point shape we determine to edit.

searchingTolerance Double
This parameter is the tolerance to search the control point.

Returns

Boolean
Returns true if control point are found and set correct, otherwise, returns false.

Exceptions

ArgumentNullException
If you pass a null as the targetPointShape, we will throw an ArgumentNullException.

ArgumentOutOfRangeException
If you pass a minus value for the tolerance, we will throw an ArgumentOutOfRangeException.

SetSelectedControlPointCore(PointShape, Double)

This protected virtual method is the Core method of SetSelectedControlPoint API.

protected Feature SetSelectedControlPointCore(PointShape targetPointShape, double searchingTolerance)

Parameters

targetPointShape PointShape
This parameter is target point shape we determine to edit.

searchingTolerance Double
This parameter is the tolerance to search the control point.

Returns

Feature
A feature stands for the selected control point.

Exceptions

ArgumentNullException
If you pass a null as the targetPointShape, we will throw an ArgumentNullException.

ArgumentOutOfRangeException
If you pass a minus value for the tolerance, we will throw an ArgumentOutOfRangeException.

EndEditing(PointShape)

This method End the editing for the interactive editing on the feature in the EditShapesLayer. You can override its logic by rewrite its core method.

protected void EndEditing(PointShape targetPointShape)

Parameters

targetPointShape PointShape
This is the targetPointShape possible be used when overriding.

EndEditingCore(PointShape)

This is the core method of EndEditing method. This method End the editing for the interactive editing on the feature in the EditShapesLayer.

protected void EndEditingCore(PointShape targetPointShape)

Parameters

targetPointShape PointShape
This is the targetPointShape possible be used when overriding.

ClearAllControlPoints()

This method clears all control points in corresponding layer.

public void ClearAllControlPoints()

CalculateAllControlPoints()

This method calculates all control points.

public void CalculateAllControlPoints()

Remarks:

First, it will clear all control points. Then it will calculate each control points according to their settings.

CalculateDragControlPoints()

This method calculates the Drag control points for all the features in the EditShapesLayer. You can override its logic by rewrite its core method.

protected void CalculateDragControlPoints()

CalculateDragControlPointsCore(Feature)

This is the core API for the CalculateDragControlPoints, you can override this method if you want to change its logic.

protected IEnumerable<Feature> CalculateDragControlPointsCore(Feature feature)

Parameters

feature Feature
The target feature to calculate the control point.

Returns

IEnumerable<Feature>
A collection of features stands for the Drag control points.

CalculateRotateControlPoints()

This method calculates the Rotate control points for all the features in the EditShapesLayer. You can override its logic by rewrite its core method.

protected void CalculateRotateControlPoints()

CalculateRotateControlPointsCore(Feature)

This is the core API for the CalculateRotateControlPoints, you can override this method if you want to change its logic.

protected IEnumerable<Feature> CalculateRotateControlPointsCore(Feature feature)

Parameters

feature Feature
The target feature to calculate the control point.

Returns

IEnumerable<Feature>
A collection of features stands for the Rotate control points.

CalculateResizeControlPoints()

This method calculates the Resize control points for all the features in the EditShapesLayer. You can override its logic by rewrite its core method.

protected void CalculateResizeControlPoints()

CalculateResizeControlPointsCore(Feature)

This is the core API for the CalculateResizeControlPoints, you can override this method if you want to change its logic.

protected IEnumerable<Feature> CalculateResizeControlPointsCore(Feature feature)

Parameters

feature Feature
The target feature to calculate the control point.

Returns

IEnumerable<Feature>
A collection of features stands for the Resize control points.

CalculateVertexControlPoints()

This method calculates the vertex control points for all the features in the EditShapesLayer. You can override its logic by rewrite its core method.

protected void CalculateVertexControlPoints()

CalculateVertexControlPointsCore(Feature)

This is the core API for the CalculateVertexControlPoints, you can override this method if you want to change its logic.

protected IEnumerable<Feature> CalculateVertexControlPointsCore(Feature feature)

Parameters

feature Feature
The target feature to calculate the control point.

Returns

IEnumerable<Feature>
A collection of features stands for the Vertex control points.

TouchDownCore(TouchDownMapViewEventArgs, IMapView)

This overrides the MouseDown logic in its base class InteractiveOverlay.

protected EventBubblingMode TouchDownCore(TouchDownMapViewEventArgs e, IMapView mapView)

Parameters

e TouchDownMapViewEventArgs
The event args of MapView.TouchDown event.

mapView IMapView
The mapView the overlay is added to

Returns

EventBubblingMode
Interaction results of this method.

Exceptions

ArgumentNullException
If you pass a null as the interactionArguments, we will throw an ArgumentNullException.

TouchMoveCore(TouchMoveMapViewEventArgs, IMapView)

This overrides the MouseMove logic in its base class InteractiveOverlay.

protected EventBubblingMode TouchMoveCore(TouchMoveMapViewEventArgs e, IMapView mapView)

Parameters

e TouchMoveMapViewEventArgs
The event args of MapView.TouchMove event.

mapView IMapView
The mapView the overlay is added to

Returns

EventBubblingMode
Interaction results of this method.

Exceptions

ArgumentNullException
If you pass a null as the interactionArguments, we will throw an ArgumentNullException.

TouchUpCore(TouchUpMapViewEventArgs, IMapView)

This overrides the MouseUp logic in its base class InteractiveOverlay.

protected EventBubblingMode TouchUpCore(TouchUpMapViewEventArgs e, IMapView mapView)

Parameters

e TouchUpMapViewEventArgs
The event args of MapView.TouchUp event.

mapView IMapView
The mapView the overlay is added to

Returns

EventBubblingMode
Interaction results of this method.

Exceptions

ArgumentNullException
If you pass a null as the interactionArguments, we will throw an ArgumentNullException.

SingleTapCore(SingleTapMapViewEventArgs, IMapView)

This overrides the MouseClick logic in its base class.

protected EventBubblingMode SingleTapCore(SingleTapMapViewEventArgs e, IMapView mapView)

Parameters

e SingleTapMapViewEventArgs
The event args of MapView.SingleTap event.

mapView IMapView
The mapView the overlay is added to

Returns

EventBubblingMode
Interaction results of this method.

Exceptions

ArgumentNullException
If you pass a null as the interactionArguments, we will throw an ArgumentNullException.

DoubleTapCore(DoubleTapMapViewEventArgs, IMapView)

This overrides the MouseClick logic in its base class.

protected EventBubblingMode DoubleTapCore(DoubleTapMapViewEventArgs e, IMapView mapView)

Parameters

e DoubleTapMapViewEventArgs
The event args of MapView.DoubleTap event.

mapView IMapView
The mapView the overlay is added to

Returns

EventBubblingMode

DragFeature(Feature, PointShape, PointShape)

This is the method to Drag a feature.

protected Feature DragFeature(Feature sourceFeature, PointShape sourceControlPoint, PointShape targetControlPoint)

Parameters

sourceFeature Feature
This parameter specifies the source feature to be dragged.

sourceControlPoint PointShape
This parameter specifies the source control point to drag the feature.

targetControlPoint PointShape
This parameter specifies the target control point to drag the feature.

Returns

Feature
Returns a dragged feature.

Exceptions

ArgumentNullException
If you pass a null as the sourceControlPoint, we will throw an ArgumentNullException.

ArgumentNullException
If you pass a null as the targetControlPoint, we will throw an ArgumentNullException.

Remarks:

This method is the concrete wrapper for the abstract method DragFeatureCore.

As this is a concrete public method that wraps a Core method, we reserve the right to add events and other logic to pre- or post-process data returned by the Core version of the method. In this way, we leave our framework open on our end, but also allow you the developer to extend our logic to suit your needs. If you have questions about this, please contact our support team as we would be happy to work with you on extending our framework.

DragFeatureCore(Feature, PointShape, PointShape)

This is the Core method of DragFeature which encapsulate the logic.

protected Feature DragFeatureCore(Feature sourceFeature, PointShape sourceControlPoint, PointShape targetControlPoint)

Parameters

sourceFeature Feature
This parameter specifies the source feature to be dragged.

sourceControlPoint PointShape
This parameter specifies the source control point to drag the feature.

targetControlPoint PointShape
This parameter specifies the target control point to drag the feature.

Returns

Feature
Returns a dragged feature.

Exceptions

ArgumentNullException
If you pass a null as the sourceControlPoint, we will throw an ArgumentNullException.

ArgumentNullException
If you pass a null as the targetControlPoint, we will throw an ArgumentNullException.

ResizeFeature(Feature, PointShape, PointShape)

This is the method to Resize a feature.

protected Feature ResizeFeature(Feature sourceFeature, PointShape sourceControlPoint, PointShape targetControlPoint)

Parameters

sourceFeature Feature
This parameter specifies the source feature to be resized.

sourceControlPoint PointShape
This parameter specifies the source control point to resize the feature.

targetControlPoint PointShape
This parameter specifies the target control point to resize the feature.

Returns

Feature
Returns a resized feature.

Exceptions

ArgumentNullException
If you pass a null as the sourceControlPoint, we will throw an ArgumentNullException.

ArgumentNullException
If you pass a null as the targetControlPoint, we will throw an ArgumentNullException.

Remarks:

This method is the concrete wrapper for the abstract method ResizeFeatureCore.

As this is a concrete public method that wraps a Core method, we reserve the right to add events and other logic to pre- or post-process data returned by the Core version of the method. In this way, we leave our framework open on our end, but also allow you the developer to extend our logic to suit your needs. If you have questions about this, please contact our support team as we would be happy to work with you on extending our framework.

ResizeFeatureCore(Feature, PointShape, PointShape)

This is the Core method of ResizeFeature which encapsulate the logic.

protected Feature ResizeFeatureCore(Feature sourceFeature, PointShape sourceControlPoint, PointShape targetControlPoint)

Parameters

sourceFeature Feature
This parameter specifies the source feature to be resized.

sourceControlPoint PointShape
This parameter specifies the source control point to resize the feature.

targetControlPoint PointShape
This parameter specifies the target control point to resize the feature.

Returns

Feature
Returns a resized feature.

Exceptions

ArgumentNullException
If you pass a null as the sourceControlPoint, we will throw an ArgumentNullException.

ArgumentNullException
If you pass a null as the targetControlPoint, we will throw an ArgumentNullException.

RotateFeature(Feature, PointShape, PointShape)

This is the method to Rotate a feature.

protected Feature RotateFeature(Feature sourceFeature, PointShape sourceControlPoint, PointShape targetControlPoint)

Parameters

sourceFeature Feature
This parameter specifies the source feature to be rotated.

sourceControlPoint PointShape
This parameter specifies the source control point to rotate the feature.

targetControlPoint PointShape
This parameter specifies the target control point to rotate the feature.

Returns

Feature
Returns a rotated feature.

Exceptions

ArgumentNullException
If you pass a null as the sourceControlPoint, we will throw an ArgumentNullException.

ArgumentNullException
If you pass a null as the targetControlPoint, we will throw an ArgumentNullException.

Remarks:

This method is the concrete wrapper for the abstract method RotateFeatureCore.

As this is a concrete public method that wraps a Core method, we reserve the right to add events and other logic to pre- or post-process data returned by the Core version of the method. In this way, we leave our framework open on our end, but also allow you the developer to extend our logic to suit your needs. If you have questions about this, please contact our support team as we would be happy to work with you on extending our framework.

RotateFeatureCore(Feature, PointShape, PointShape)

This is the Core method of RotateFeature which encapsulate the logic.

protected Feature RotateFeatureCore(Feature sourceFeature, PointShape sourceControlPoint, PointShape targetControlPoint)

Parameters

sourceFeature Feature
This parameter specifies the source feature to be rotated.

sourceControlPoint PointShape
This parameter specifies the source control point to rotate the feature.

targetControlPoint PointShape
This parameter specifies the target control point to rotate the feature.

Returns

Feature
Returns a resized feature.

Exceptions

ArgumentNullException
If you pass a null as the sourceControlPoint, we will throw an ArgumentNullException.

ArgumentNullException
If you pass a null as the targetControlPoint, we will throw an ArgumentNullException.

AddVertex(PointShape, Double)

This is the method to add vertex from a feature.

protected bool AddVertex(PointShape targetPointShape, double searchingTolerance)

Parameters

targetPointShape PointShape
This parameter specifies the point shape to search the vertex.

searchingTolerance Double
This parameter specifies the searching tolerance to search the vertex.

Returns

Boolean
True if add vertex succeed, otherwise return false.

Exceptions

ArgumentNullException
If you pass a null as the targetPointShape, we will throw an ArgumentNullException.

ArgumentOutOfRangeException
If you pass a searchingTolerance negative value, we will throw an ArgumentOutOfRangeException.

Remarks:

This method is the concrete wrapper for the abstract method AddVertexCore.

As this is a concrete public method that wraps a Core method, we reserve the right to add events and other logic to pre- or post-process data returned by the Core version of the method. In this way, we leave our framework open on our end, but also allow you the developer to extend our logic to suit your needs. If you have questions about this, please contact our support team as we would be happy to work with you on extending our framework.

AddVertexCore(Feature, PointShape, Double)

This is the Core method of AddVertex which encapsulate the logic.

protected Feature AddVertexCore(Feature targetFeature, PointShape targetPointShape, double searchingTolerance)

Parameters

targetFeature Feature
This parameter specifies the target feature to add vertex from.

targetPointShape PointShape
This parameter specifies the target vertex to be added.

searchingTolerance Double
This parameter specifies the searching tolerance to search the vertex.

Returns

Feature
Returns a vertex added feature.

Exceptions

ArgumentNullException
If you pass a null as the targetPointShape, we will throw an ArgumentNullException.

ArgumentOutOfRangeException
If you pass a searchingTolerance negative value, we will throw an ArgumentOutOfRangeException.

MoveVertex(Feature, PointShape, PointShape)

This is the method to move vertex from a feature.

protected Feature MoveVertex(Feature sourceFeature, PointShape sourceControlPoint, PointShape targetControlPoint)

Parameters

sourceFeature Feature
This parameter specifies the source feature to be move vertex from.

sourceControlPoint PointShape
This parameter specifies the source control point to move vertex from the feature.

targetControlPoint PointShape
This parameter specifies the target control point to move vertex from the feature.

Returns

Feature
Returns a rotated feature.

Exceptions

ArgumentNullException
If you pass a null as the sourceControlPoint, we will throw an ArgumentNullException.

ArgumentNullException
If you pass a null as the targetControlPoint, we will throw an ArgumentNullException.

Remarks:

This method is the concrete wrapper for the abstract method MoveVertexCore.

As this is a concrete public method that wraps a Core method, we reserve the right to add events and other logic to pre- or post-process data returned by the Core version of the method. In this way, we leave our framework open on our end, but also allow you the developer to extend our logic to suit your needs. If you have questions about this, please contact our support team as we would be happy to work with you on extending our framework.

MoveVertexCore(Feature, PointShape, PointShape)

This is the Core method of MoveVertex which encapsulate the logic.

protected Feature MoveVertexCore(Feature sourceFeature, PointShape sourceControlPoint, PointShape targetControlPoint)

Parameters

sourceFeature Feature
This parameter specifies the source feature to be move vertex from.

sourceControlPoint PointShape
This parameter specifies the source control point to move vertex from the feature.

targetControlPoint PointShape
This parameter specifies the target control point to move vertex from the feature.

Returns

Feature
Returns a vertex moved feature.

Exceptions

ArgumentNullException
If you pass a null as the sourceControlPoint, we will throw an ArgumentNullException.

ArgumentNullException
If you pass a null as the targetControlPoint, we will throw an ArgumentNullException.

RemoveVertex(PointShape, Double)

This is the method to remove vertex from a feature.

protected bool RemoveVertex(PointShape targetPointShape, double searchingTolerance)

Parameters

targetPointShape PointShape
This parameter specifies the point shape to search the vertex.

searchingTolerance Double
This parameter specifies the searching tolerance to search the vertex.

Returns

Boolean
True if remove vertex succeed , otherwise return false.

Exceptions

ArgumentNullException
If you pass a null as the targetPointShape, we will throw an ArgumentNullException.

ArgumentOutOfRangeException
If you pass a searchingTolerance negative value, we will throw an ArgumentOutOfRangeException.

Remarks:

This method is the concrete wrapper for the abstract method RemoveVertexCore.

As this is a concrete public method that wraps a Core method, we reserve the right to add events and other logic to pre- or post-process data returned by the Core version of the method. In this way, we leave our framework open on our end, but also allow you the developer to extend our logic to suit your needs. If you have questions about this, please contact our support team as we would be happy to work with you on extending our framework.

RemoveVertexCore(Feature, Vertex, Double)

This is the Core method of RemoveVertex which encapsulate the logic.

protected Feature RemoveVertexCore(Feature editShapeFeature, Vertex selectedVertex, double searchingTolerance)

Parameters

editShapeFeature Feature
This parameter specifies the target feature to be remove vertex from.

selectedVertex Vertex
This parameter specifies the selected vertex to search the vertex.

searchingTolerance Double
This parameter specifies the searching tolerance to search the vertex.

Returns

Feature
Returns a vertex removed feature.

Exceptions

ArgumentNullException
If you pass a null as the targetPointShape, we will throw an ArgumentNullException.

ArgumentOutOfRangeException
If you pass a searchingTolerance negative value, we will throw an ArgumentOutOfRangeException.

OnFeatureDragging(FeatureDraggingEditInteractiveOverlayEventArgs)

This event will be fired before dragging the feature.

protected void OnFeatureDragging(FeatureDraggingEditInteractiveOverlayEventArgs e)

Parameters

e FeatureDraggingEditInteractiveOverlayEventArgs
The FeatureDraggingEditInteractiveOverlayEventArgs passed for the event raised.

OnFeatureDragged(FeatureDraggedEditInteractiveOverlayEventArgs)

This event will be fired after dragging the feature.

protected void OnFeatureDragged(FeatureDraggedEditInteractiveOverlayEventArgs e)

Parameters

e FeatureDraggedEditInteractiveOverlayEventArgs
The FeatureDraggedEditInteractiveOverlayEventArgs passed for the event raised.

OnFeatureResizing(FeatureResizingEditInteractiveOverlayEventArgs)

This event will be fired before resizing the feature.

protected void OnFeatureResizing(FeatureResizingEditInteractiveOverlayEventArgs e)

Parameters

e FeatureResizingEditInteractiveOverlayEventArgs
The FeatureResizingEditInteractiveOverlayEventArgs passed for the event raised.

OnFeatureResized(FeatureResizedEditInteractiveOverlayEventArgs)

This event will be fired after resizing the feature.

protected void OnFeatureResized(FeatureResizedEditInteractiveOverlayEventArgs e)

Parameters

e FeatureResizedEditInteractiveOverlayEventArgs
The FeatureResizedEditInteractiveOverlayEventArgs passed for the event raised.

OnFeatureRotating(FeatureRotatingEditInteractiveOverlayEventArgs)

This event will be fired before rotating the feature.

protected void OnFeatureRotating(FeatureRotatingEditInteractiveOverlayEventArgs e)

Parameters

e FeatureRotatingEditInteractiveOverlayEventArgs
The FeatureRotatingEditInteractiveOverlayEventArgs passed for the event raised.

OnFeatureRotated(FeatureRotatedEditInteractiveOverlayEventArgs)

This event will be fired after rotating the feature.

protected void OnFeatureRotated(FeatureRotatedEditInteractiveOverlayEventArgs e)

Parameters

e FeatureRotatedEditInteractiveOverlayEventArgs
The FeatureRotatedEditInteractiveOverlayEventArgs passed for the event raised.

OnControlPointSelecting(ControlPointSelectingEditInteractiveOverlayEventArgs)

This event will be fired before control point selected.

protected void OnControlPointSelecting(ControlPointSelectingEditInteractiveOverlayEventArgs e)

Parameters

e ControlPointSelectingEditInteractiveOverlayEventArgs
The ControlPointSelectingEditInteractiveOverlayEventArgs passed for the event raised.

OnControlPointSelected(ControlPointSelectedEditInteractiveOverlayEventArgs)

This event will be fired after control point selected.

protected void OnControlPointSelected(ControlPointSelectedEditInteractiveOverlayEventArgs e)

Parameters

e ControlPointSelectedEditInteractiveOverlayEventArgs
The ControlPointSelectedEditInteractiveOverlayEventArgs passed for the event raised.

OnVertexAdding(VertexAddingEditInteractiveOverlayEventArgs)

This event will be fired before vertex added to the edit feature.

protected void OnVertexAdding(VertexAddingEditInteractiveOverlayEventArgs e)

Parameters

e VertexAddingEditInteractiveOverlayEventArgs
The VertexAddingEditInteractiveOverlayEventArgs passed for the event raised.

OnVertexAdded(VertexAddedEditInteractiveOverlayEventArgs)

This event will be fired after vertex added to the edit feature.

protected void OnVertexAdded(VertexAddedEditInteractiveOverlayEventArgs e)

Parameters

e VertexAddedEditInteractiveOverlayEventArgs
The VertexAddedEditInteractiveOverlayEventArgs passed for the event raised.

OnVertexMoving(VertexMovingEditInteractiveOverlayEventArgs)

This event will be fired before moving the feature.

protected void OnVertexMoving(VertexMovingEditInteractiveOverlayEventArgs e)

Parameters

e VertexMovingEditInteractiveOverlayEventArgs
The VertexMovingEditInteractiveOverlayEventArgs passed for the event raised.

OnVertexMoved(VertexMovedEditInteractiveOverlayEventArgs)

This event will be fired after moving the feature.

protected void OnVertexMoved(VertexMovedEditInteractiveOverlayEventArgs e)

Parameters

e VertexMovedEditInteractiveOverlayEventArgs
The VertexMovedEditInteractiveOverlayEventArgs passed for the event raised.

OnVertexRemoving(VertexRemovingEditInteractiveOverlayEventArgs)

This event will be fired before vertex removed from the edit feature.

protected void OnVertexRemoving(VertexRemovingEditInteractiveOverlayEventArgs e)

Parameters

e VertexRemovingEditInteractiveOverlayEventArgs
The VertexRemovingEditInteractiveOverlayEventArgs passed for the event raised.

OnVertexRemoved(VertexRemovedEditInteractiveOverlayEventArgs)

This event will be fired after vertex removed from the edit feature.

protected void OnVertexRemoved(VertexRemovedEditInteractiveOverlayEventArgs e)

Parameters

e VertexRemovedEditInteractiveOverlayEventArgs
The VertexRemovedEditInteractiveOverlayEventArgs passed for the event raised.

OnEditEnded(Feature)

This event will be fired when editing is finished.

protected void OnEditEnded(Feature editedFeature)

Parameters

editedFeature Feature
The feature that has been edited.

GetAllVerticesFromFeature(Feature)

internal static Collection<PointShape> GetAllVerticesFromFeature(Feature feature)

Parameters

feature Feature

Returns

Collection<PointShape>

DeleteTrackShape()

Delete the selected track shape.

public void DeleteTrackShape()

Remarks:

Should set TrackMode as EditShape mode first, use mouse select one shape, and then call DeleteTrackShape, it will delete the selected shape.

Events

FeatureDragged

This event will be fired after drag the feature.

public event EventHandler<FeatureDraggedEditInteractiveOverlayEventArgs> FeatureDragged;

FeatureDragging

This event will be fired before drag the feature.

public event EventHandler<FeatureDraggingEditInteractiveOverlayEventArgs> FeatureDragging;

FeatureResized

This event will be fired after resize the feature.

public event EventHandler<FeatureResizedEditInteractiveOverlayEventArgs> FeatureResized;

FeatureResizing

This event will be fired before resize the feature.

public event EventHandler<FeatureResizingEditInteractiveOverlayEventArgs> FeatureResizing;

FeatureRotated

This event will be fired after rotate the feature.

public event EventHandler<FeatureRotatedEditInteractiveOverlayEventArgs> FeatureRotated;

FeatureRotating

This event will be fired before rotate the feature.

public event EventHandler<FeatureRotatingEditInteractiveOverlayEventArgs> FeatureRotating;

VertexAdded

This event will be fired after add the vertex.

public event EventHandler<VertexAddedEditInteractiveOverlayEventArgs> VertexAdded;

VertexAdding

This event will be fired before add the vertex.

public event EventHandler<VertexAddingEditInteractiveOverlayEventArgs> VertexAdding;

VertexMoved

This event will be fired after move the vertex.

public event EventHandler<VertexMovedEditInteractiveOverlayEventArgs> VertexMoved;

VertexMoving

This event will be fired before move the vertex.

public event EventHandler<VertexMovingEditInteractiveOverlayEventArgs> VertexMoving;

VertexRemoved

This event will be fired after remove the vertex.

public event EventHandler<VertexRemovedEditInteractiveOverlayEventArgs> VertexRemoved;

VertexRemoving

This event will be fired before remove the vertex.

public event EventHandler<VertexRemovingEditInteractiveOverlayEventArgs> VertexRemoving;

ControlPointSelected

This event will be fired after select the control point.

public event EventHandler<ControlPointSelectedEditInteractiveOverlayEventArgs> ControlPointSelected;

ControlPointSelecting

This event will be fired before select the control point.

public event EventHandler<ControlPointSelectingEditInteractiveOverlayEventArgs> ControlPointSelecting;

EditEnded

This event will be fired after editing.

public event EventHandler<EditEndedEditInteractiveOverlayEventArgs> EditEnded;

Drawing

This event raises before the overlay is drawing.

public event EventHandler<DrawingOverlayEventArgs> Drawing;

Drawn

This event raises after the overlay is drawn.

public event EventHandler<DrawnOverlayEventArgs> Drawn;

ChildrenReordered

public event EventHandler ChildrenReordered;

Focused

public event EventHandler<FocusEventArgs> Focused;

MeasureInvalidated

public event EventHandler MeasureInvalidated;

SizeChanged

public event EventHandler SizeChanged;

Unfocused

public event EventHandler<FocusEventArgs> Unfocused;

BatchCommitted

public event EventHandler<EventArg<VisualElement>> BatchCommitted;

FocusChangeRequested

public event EventHandler<FocusRequestArgs> FocusChangeRequested;

Loaded

public event EventHandler Loaded;

Unloaded

public event EventHandler Unloaded;

ChildAdded

public event EventHandler<ElementEventArgs> ChildAdded;

ChildRemoved

public event EventHandler<ElementEventArgs> ChildRemoved;

DescendantAdded

public event EventHandler<ElementEventArgs> DescendantAdded;

DescendantRemoved

public event EventHandler<ElementEventArgs> DescendantRemoved;

ParentChanging

public event EventHandler<ParentChangingEventArgs> ParentChanging;

ParentChanged

public event EventHandler ParentChanged;

HandlerChanging

public event EventHandler<HandlerChangingEventArgs> HandlerChanging;

HandlerChanged

public event EventHandler HandlerChanged;

PropertyChanged

public event PropertyChangedEventHandler PropertyChanged;

PropertyChanging

public event PropertyChangingEventHandler PropertyChanging;

BindingContextChanged

public event EventHandler BindingContextChanged;