Franklin,
I am sorry if we did not give you the complete answer first. We did not know with what datum exactely you were dealing with. Now that we have that information, we can give the full answer.
So, for P2 Exc T9 datum Samboja (Indonesia), you need the EPSG 4125 spatial-reference.org/ref/epsg/4125/. Please see the code below to see how I went I did the datum shift from P2 Exc T9 to Wgs84. Also, you can see in the screenshot the result and how the same point in p2 Exc T9 is shifted about 100 meters to the south west compared to WGS84.
// Set the extent and the background color
wpfMap1.CurrentExtent = new RectangleShape(117.146, -0.960, 117.150, -0.963);
wpfMap1.Background = new SolidColorBrush(Color.FromRgb(148, 196, 243));
//Displays the World Map Kit as a background.
WorldMapKitWmsWpfOverlay worldMapKitWmsWpfOverlay = new WorldMapKitWmsWpfOverlay();
wpfMap1.Overlays.Add(worldMapKitWmsWpfOverlay);
//InMemoryFeatureLayer for displaying the points.
InMemoryFeatureLayer inMemoryFeatureLayer = new InMemoryFeatureLayer();
inMemoryFeatureLayer.Open();
inMemoryFeatureLayer.Columns.Add(new FeatureSourceColumn("Datum", "string", 20));
inMemoryFeatureLayer.Close();
inMemoryFeatureLayer.ZoomLevelSet.ZoomLevel01.DefaultPointStyle = PointStyles.CreateSimpleCircleStyle(GeoColor.StandardColors.DarkGreen,
10, GeoColor.StandardColors.Black, 2);
inMemoryFeatureLayer.ZoomLevelSet.ZoomLevel01.DefaultTextStyle = TextStyles.CreateSimpleTextStyle("Datum", "Arial", 10, DrawingFontStyles.Bold,
GeoColor.StandardColors.Black, 10, 0);
inMemoryFeatureLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
double longitudeP2_Exc_T9 = DecimalDegreesHelper.GetDecimalDegreeFromDegreesMinutesSeconds(117, 8, 50.972);
double latitudeP2_Exc_T9 = -DecimalDegreesHelper.GetDecimalDegreeFromDegreesMinutesSeconds(0, 57, 45.589);
//We are adding the points for P2 Exc T9 and WGS84. You have to understand that they are actually the same points except that two different
//datums are used.
//The point is originatly in degrees with P2 Exc T9 datum. We display it to show how offset it is compared to the same point in degrees with WGS84 datum
PointShape P2_Exc_T9pointShape = new PointShape(longitudeP2_Exc_T9, latitudeP2_Exc_T9);
Feature P2_Exc_T9feature = new Feature(P2_Exc_T9pointShape);
P2_Exc_T9feature.ColumnValues.Add("Datum", "P2 Exc T9");
inMemoryFeatureLayer.InternalFeatures.Add(P2_Exc_T9feature);
//We take the same point in P2 Exc T9 datum and apply Datum trasformation to it so that it is using WGS84 as for the World Map Kit.
//So, the point in WGS84 is the corrected point from P2 Exc T9 so that it matched World Map Kit.
//Notice that for datum transformation, the same API is used where you set the parameters for InternalProjectionParameters and externalProjectionParameters.
//To go from P2 Exc T9 datum to WGS84 datum so that the point matches the projection of the map.
ManagedProj4Projection proj4 = new ManagedProj4Projection();
//Degrees P2 Exc T9 for internal projection
//spatial-reference.org/ref/epsg/4125/ (for reference)
//Datum shift using +towgs84 parameters with Delta X -404.78, Delta Y 685.68 and Delta Y 45.47.
//See trac.osgeo.org/proj/wiki/GenParms#towgs84-DatumtransformationtoWGS84 for futher info on parameters.
proj4.InternalProjectionParameters = "+proj=longlat +ellps=bessel +towgs84=-404.78,685.68,45.47,0,0,0,0 +no_defs";
//WGS84 projection (datum) for external projection
//spatialreference.org/ref/epsg/4326/ (for reference)
//en.wikipedia.org/wiki/WGS84 (for further information)
proj4.ExternalProjectionParameters = ManagedProj4Projection.GetWgs84ParametersString();
proj4.Open();
Vertex WGS84vertex = proj4.ConvertToExternalProjection(longitudeP2_Exc_T9, latitudeP2_Exc_T9);
proj4.Close();
Feature WGS84feature = new Feature(new PointShape(WGS84vertex.X, WGS84vertex.Y));
WGS84feature.ColumnValues.Add("Datum", "WSG84");
inMemoryFeatureLayer.InternalFeatures.Add(WGS84feature);
LayerOverlay dynamicOverlay = new LayerOverlay();
dynamicOverlay.Layers.Add("WGS84Feature", inMemoryFeatureLayer);
wpfMap1.Overlays.Add(dynamicOverlay);
//Displays Scale Bar to how offset the same point is based on the datum.
//You can notice that the P2 Exc T9 point is offset about 100 meters to the south west compared to WGS84.
//When doing a datum transformation, the difference is slight, usually a few meters. It can be thought as merely a correction.
//When changing projection to the data, though, the difference is huge. We change completely of coordinate system and the same
//point cannot be displayed on the same map.
ScaleBarAdornmentLayer scaleBarAdornmentLayer = new ScaleBarAdornmentLayer();
scaleBarAdornmentLayer.UnitFamily = UnitSystem.Metric;
scaleBarAdornmentLayer.Location = AdornmentLocation.LowerLeft;
AdornmentOverlay adornmentOverlay = new AdornmentOverlay();
adornmentOverlay.Layers.Add(scaleBarAdornmentLayer);
wpfMap1.Overlays.Add(adornmentOverlay);
wpfMap1.Refresh();