private void OnStatusReported(GeometryEditStatus status)
{
var polyline = status.NewGeometry as Polyline;
// Only reset display when first vertex is committed.
if (polyline != null && polyline.Parts != null && polyline.Parts.Count > 0)
{
var vertices = polyline.Parts[0].GetPoints();
if (vertices != null && vertices.Count() == 1)
ResetDisplay();
}
switch (status.GeometryEditAction)
{
case GeometryEditAction.AddedVertex:
{
MeasureItemCollection.Insert(status.VertexPosition.CoordinateIndex,
new MeasureItem()
{
Location = status.NewVertex,
LinearUnitType = LinearUnitType,
CoordinateFormat = CoordinateFormat
});
break;
}
case GeometryEditAction.DeletedVertex:
{
MeasureItemCollection.RemoveAt(status.VertexPosition.CoordinateIndex);
break;
}
default:
{
MeasureItemCollection.Clear();
if (polyline != null && polyline.Parts != null)
{
foreach (var p in polyline.Parts[0].GetPoints())
{
MeasureItemCollection.Add(new MeasureItem()
{
Location = p,
LinearUnitType = LinearUnitType,
CoordinateFormat = CoordinateFormat
});
}
}
break;
}
}
UpdateDisplay(polyline);
}